数值基础篇:静态数据简析
介绍静态数据,我们还是以MMORPG为模板,列举角色、装备、技能、BUFF、怪物等这几个系统的静态数据。
角色基础属性表
一般的MMORPG游戏的角色会拥有如下属性。
生命值上限
生命值是衡量角色健康情况的数值,表格中的数据代表角色在当前等级的基础生命值上限。角色的生命值是不可能超出生命值上限的,但生命值上限可以受到装备、技能等系统的影响。
魔法值上限
魔法值是判断技能能否释放的数值条件。表格中的数据表示角色在当前等级的基础魔法值上限。同样地,魔法值也是不能超出上限的,它也会受到装备、技能等系统的影响。
最小物理攻击
最小物理攻击是角色基础物理攻击的最小值。
最大物理攻击
最大物理攻击是角色基础物理攻击的最大值。
最小魔法攻击
最小魔法攻击是角色基础魔法攻击的最小值。
最大魔法攻击
最大魔法攻击是角色基础魔法攻击的最大值。
物理防御
物理防御是用来计算物理伤害的防御参数。
魔法防御
魔法防御是用来计算魔法伤害的防御参数。
命中
命中是用来计算命中公式的参数。
闪避
闪避是用来计算命中公式的参数。
暴击
暴击是用来计算暴击公式的参数。
抗暴击
抗暴击是用来计算暴击公式的参数。
等级
等级是用来标示每一级的数据指引列的。
以上字段的数据类型全部为整型数据或浮点型数据。数据表最终的结构如图1-1所示。
在这里我们将不同职业的属性以平铺的方式展开,并不是所有游戏都会采用这样的设计,有的游戏是用一个字段标示职业,然后罗列所有职业的属性。这里不用过于纠结这个方式,只要保证数据可以正确地被程序解析并且字段符合设计要求即可。
装备属性表
在这里尽量列举较多的属性供大家借鉴,字段如下。
装备 ID
装备在该表中的唯一标识编号,不能有重复编号。数据类型:根据项目情况来决定,一般来说是整型。
装备名称
装备用于显示的名称,可以有相同名称的道具。数据类型:文本。
装备类型
代表装备的位置,不同的位置用不同的数字加以区分。数据类型:整型。对应位置如下。
11:武器(只有一件武器,没有主副手之分)
1:手套(唯一)
2:项链(唯一)
3:头盔(唯一)
4:衣服(唯一)
5:护肩(唯一)
6:裤子(唯一)
7:鞋子(唯一)
8:腰带(唯一)
21:戒指(两个)
22:首饰(两个)
性别需求
代表装备需求的性别要求,视游戏情况来设置这个字段。数据类型:整型。对应关系如下。
1:男;2:女;0:通用
职业需求
代表装备需求的职业要求。数据类型:文本。对应关系如下。
1:战士
2:法师
3:牧师
4:刺客
1,2,3,4:通用
图标编号
代表装备显示在背包中的图标编号。数据类型:文本。这个字段需要和程序协商是填充完整路径下的图标编号,还是只填充文件夹下的图标编号。不管是哪种方式,只要程序可以解析即可。
最小物理攻击
等同角色基础属性表中的相同字段。
最大物理攻击
等同角色基础属性表中的相同字段。
最小魔法攻击
等同角色基础属性表中的相同字段。
最大魔法攻击
等同角色基础属性表中的相同字段。
物理防御
等同角色基础属性表中的相同字段。
魔法防御
等同角色基础属性表中的相同字段。
生命值上限
等同角色基础属性表中的相同字段。
魔法值上限
等同角色基础属性表中的相同字段。
命中
等同角色基础属性表中的相同字段。
闪避
等同角色基础属性表中的相同字段。
暴击
等同角色基础属性表中的相同字段。
抗暴击
防御暴击的防御属性。数据类型:整型。
生命自动恢复
装备自带的回血属性,由于会对消耗品产生较大影响,所以较少游戏会制作这类道具。数据类型:整型。
魔法自动恢复
参考上述生命自动恢复。数据类型:整型。
背击伤害
当角色面向目标背面发动攻击的时候才会附加的伤害,这个属性的前提条件是游戏可以区分角色朝向目标背面还是正面。目前来看,较少游戏采用这种设计。数据类型:整型。22.移动速度
移动速度是游戏中非常敏感的数值,一般游戏不会加这个属性。数据类型:视情况而定。
晕眩时间减少百分比
可以减少目标晕眩时间的神奇属性,由于属性价值较高,所以要控制投放尺度。数据类型:整型。
暴击增伤百分比
当暴击之后伤害可以增幅的百分比。数据类型:整型。
暴击减伤百分比
被暴击之后可以减免的伤害百分比。数据类型:整型。
暴击增伤固定值
当暴击之后伤害可以增幅的固定值。数据类型:整型。
暴击减伤固定值
被暴击之后可以减免伤害的固定值。数据类型:整型。
物理伤害减免百分比
增幅减免物理伤害的百分比的数值。数据类型:整型。
魔法伤害减免百分比
增幅减免魔法伤害的百分比的数值。数据类型:整型。
物理伤害减免固定值
减免物理伤害的固定值的数值。数据类型:整型。
魔法伤害减免固定值
减免魔法伤害的固定值的数值。数据类型:整型。
攻击回生命
攻击目标后自己恢复的生命值。数据类型:整型。
攻击回魔法
攻击目标后自己恢复的魔法值。数据类型:整型。
攻击吸血
攻击目标后按照伤害或攻击的百分比来恢复自身生命值。数据类型:整型。
攻击吸魔
攻击目标后按照伤害或攻击的百分比来恢复自身魔法值。数据类型:整型。
最大生命值百分比增加生命值上限
按生命值的最大值的百分比增加生命值上限,具体增加的生命值范围视情况而定。数据类型:整型。
最大魔法值百分比增加魔法值上限
按魔法值的最大值的百分比增加魔法值上限,具体增加的魔法值范围视情况而定。数据类型:整型。
最大生命值百分比恢复生命值
按生命值的最大值的百分比来恢复生命值。数据类型:整型。
最大魔法值百分比恢复魔法值
按魔法值的最大值的百分比来恢复魔法值。数据类型:整型。
物理伤害反弹百分比
按自己承受的物理伤害的百分比来反弹伤害给敌方。数据类型:整型。
魔法伤害反弹百分比
按自己承受的魔法伤害的百分比来反弹伤害给敌方。数据类型:整型。
增加某技能等级
增加指定技能的等级。数据类型:整型。
最终伤害减免×××(绝对值)
最终伤害的绝对减免。数据类型:整型。
无视目标物理防御×点
计算角色攻击造成的物理伤害的时候,降低目标物理防御。数据类型:整型。
无视目标魔法防御×点
计算角色攻击造成的魔法伤害的时候,降低目标魔法防御。数据类型:整型。
提高打怪经验值× %
早期游戏运用较多的属性,之后的游戏不强调杀怪,所以这个属性目前使用较少。数据类型:整型。
装备描述
描述装备的文本信息。数据类型:文本。
装备品质
描述装备品质的数值,品质越高装备属性价值越高。数据类型:整型。
看到这里大家会发现有些字段的数据类型应该是浮点型数据。这里建议大家尽量不要直接用浮点型数据,因为程序内部的浮点型数据运算有一定的误差。如果我们需要用浮点型数据,可以填充整型,然后让程序在调用这个数据之前除以100,这样就得到了我们想要的浮点型数据。而有些时候百分位的计算是不能满足设计的需求的,所以我们会设置数据为万分位级别,也就是说我们填充的是万分之几,比如我们填充100,那代表的是万分之100,也就是百分之一。
技能表
技能表包含了技能的相关战斗数据,我们在这里不列举技能成长的数据。字段如下。
技能 ID
技能在该表中的唯一标识编号,不能有重复编号。数据类型:视项目情况来决定,一般来说是整型。
技能名称
技能用于显示的名称,可以有相同名称的技能。数据类型:文本。
技能基础 ID
这个字段用来标示属于同一系列的技能,具体使用情况视项目需求来决定。数据类型:视项目情况来决定。
技能等级
用于标示技能的等级。数据类型:整型。
技能描述
描述技能的文本信息。数据类型:文本。
技能分类
按系统划分的技能分类。数据类型:整型。对应关系如下。
0:基础技能
1:职业技能
2:帮会技能
3:生活技能
4:宠物技能
5:怪物技能
6:修真技能
7.技能类型
按功能划分的技能分类。数据类型:整型。对应关系如下。
0:主动技能
1:被动技能
2:骑乘技能
3:回城技能
4:召唤宠物
5:手动技能
6:召唤技能
7:打坐技能
8:反击技能
8.目标类型
对技能的目标分类。数据类型:整型。对应关系如下。
0:自己
1:友好目标
2:敌对目标
3:死亡目标
4:主人
9.施法类型
技能释放的类型。数据类型:整型。对应关系如下。
0:瞬发技能
1:吟唱技能
2:引导技能
3:移动吟唱技能
4:移动引导技能
5:持续攻击陷阱
6:触发式陷阱
7:无
10.技能范围类型
技能范围的类型区分。数据类型:整型。对应关系如下。
0:单体技能
1:自己周围AOE技能
2:自己周围一定角度AOE技能
3:选中目标周围的AOE技能
4:某个坐标周围的AOE技能
11.是否是引导类技能
是否是引导类技能。数据类型:布尔。
12.是否是骑乘时可释放的技能
当角色骑乘坐骑时是否可使用该技能。数据类型:布尔。
13.是否是投掷类技能
是否是投掷类技能。数据类型:布尔。
14.是否是冲锋类技能
是否是冲锋类技能。数据类型:布尔。
15.是否是瞬移类技能
是否是瞬移类技能。数据类型:布尔。
16.是否是跳跃类技能
是否是跳跃类技能。数据类型:布尔。
17.是否是拉人类技能
是否是拉人类技能。数据类型:布尔。
18.是否是推人类技能
是否是推人类技能。数据类型:布尔。
19.召唤怪物 ID
如果技能可以召唤怪物的话就在这里填写怪物的相关信息,没有的话不需要填写。数据类型:文本。
20.背后伤害加成
当技能是面向敌方背后释放的时候会增加的伤害百分比。数据类型:整型。
21.技能动作资源编号
技能释放时角色对应的动作资源编号,具体情况会根据项目情况做不同处理,比如有些游戏会根据职业、武器等做多套动作集合,这就需要和程序一起商量一个方法来让他们可以解析到数据。数据类型:文本。
22.动作随机
有些游戏就算对同一种动作也会做不同的随机,这个字段用来配置随机的范围。数据类型:整型。
23.动作时间
技能动作从开始到结束的时间。数据类型:整型。
24.技能是否可以被打断
标示技能是否可以被打断。数据类型:布尔。
25.吟唱时间
技能开始前的吟唱时间。数据类型:整型。
26.吟唱动作资源编号
吟唱时对应的动作资源编号。数据类型:文本。
27.吟唱特效资源编号
吟唱时对应的特效资源编号。数据类型:文本。
28.攻击特效资源编号
攻击时对应的特效资源编号。数据类型:文本。
29.轨迹特效资源编号
如果技能附带轨迹的话,是轨迹对应的特效资源编号。数据类型:文本。
30.命中特效资源编号
技能命中目标后对应的特效资源编号。数据类型:文本。
31.消耗生命值
技能消耗生命值的数值。数据类型:文本。
32.消耗魔法值
技能消耗魔法值的数值。数据类型:文本。
33.最小施法距离
释放技能距离目标的最小距离。数据类型:文本。
34.最大施法距离
释放技能距离目标的最大距离。数据类型:文本。
35.最大目标数量
技能可以攻击到目标的数量上限。数据类型:文本。
36.AOE半径
范围技能攻击的半径。数据类型:文本。
37.AOE角度
范围技能的角度。数据类型:文本。
38.技能冷却类型
技能冷却类型相同的技能会共同进入技能冷却时间,比如大部分游戏会将不同等级瞬时恢复生命的药水设置为同一个技能冷却类型。(道具使用视为释放了一个技能)这样玩家在游戏中使用任一瞬间恢复生命的药水后,其他瞬间恢复生命的药水都会进入冷却时间。从而控制药水对生命的恢复速度。数据类型:整型。
39.技能冷却时间
技能冷却所需的时间。数据类型:整型。
40.附加 BUFF
技能附带BUFF的编号,可能是多个也可能是一个。数据类型:文本。
41.附加 BUFF的概率
附带BUFF的概率,数量需要和之前的附带BUFF所匹配。数据类型:文本。
42.附加 BUFF目标
技能附带BUFF的目标选择,数量需要和之前的附带BUFF所匹配。数据类型:文本。对应关系如下。
0:自己
1:友好目标
2:敌对目标
3:死亡目标
4:主人
43.伤害类型
技能造成的伤害是哪种类型,一般游戏分物理和魔法,也有游戏会做更细致的划分。数据类型:整型。
44.仇恨值
这个字段和怪物AI系统有联系,没有仇恨体系的话就不需要这个字段。数据类型:整型。
45.伤害次数
不同游戏对这个字段的处理差别很大,有些游戏只是将一次伤害分为N次显示,有些游戏则是计算N次伤害。具体情况要视游戏情况而定。数据类型:整型。
46.基础百分比
这个字段指技能继承了多少比例的普通攻击的攻击,比如1.2就代表技能有1.2倍普通攻击的基础攻击,但这并不是最终的技能攻击。数据类型:浮点型。
47.技能附加最小攻击
技能在计算基础百分比之后的最小攻击固定值增量。数据类型:整型。
48.技能附加最大攻击
技能在计算基础百分比之后的最大攻击固定值增量。数据类型:整型。
49.技能图标
技能图标。数据类型:文本。
BUFF表
BUFF指的是游戏中的状态,一般代指有益的状态,相对应的DEBUFF代指有害的状态。但数据是统一配置在BUFF表中的。一般的BUFF表会有如下字段。
1.BUFFID
BUFF在该表中的唯一标识编号,不能有重复编号。数据类型:视项目情况来决定,一般来说是整型。
2.BUFF名称
BUFF用于显示的名称,可以有相同名称的BUFF,但由于某些BUFF只附属在技能上,所以并不是所有BUFF的名称都会被显示。数据类型:文本。
3.BUFF等级
用于标示BUFF的等级。数据类型:整型。
4.BUFF的向性类型
用于标示BUFF对于角色的作用。数据类型:整型。对应关系如下。
0:BUFF
1:DEBUFF
2:被动BUFF
5.BUFF的显示信息
描述BUFF的文本信息。数据类型:文本。
6.BUFF的图标资源
BUFF对应的图标资源,由于不同游戏的显示需求不同,具体配置几个图标要根据项目需求而定。数据类型:文本。
7.BUFF的特效资源
不同游戏的BUFF特效实现机制不同会带来不同的配置方式,比如有些游戏会在角色脚下、胸前、头顶都有特效,这就需要美术、程序来一起制定一个实现和配置方案。数据类型:文本。
8.BUFF的互斥类型
同一类型的BUFF不能同时存在,它们互为互斥关系。数据类型:整型。
9.BUFF的持续时间
BUFF存在的时间。数据类型:整型。
10.BUFF的作用时间
BUFF每隔多久生效一次的时间。数据类型:整型。
11.BUFF禁用技能列表
这里用来填写BUFF可以对哪些技能产生禁用效果。有些游戏甚至会做进一步细分,比如禁用药水或禁用某种类型的技能。运用过程中,可视具体情况来划分数值表示的技能ID的范围。数据类型:整型。
12.是否可以被移动打断
移动是否可以打断BUFF的持续。数据类型:整型。
13.是否可以被攻击打断
攻击是否可以打断BUFF的持续。数据类型:整型。
14.是否死亡消失
死亡是否可以打断BUFF的持续。数据类型:整型。
15.属性池编号
属性池是指游戏中所有属性的集合,为了方便使用,我们给不同属性赋予不同的编号。数据类型:整型。属性池编号示例如图3-1所示。
16.属性池属性值
表示对应的属性值是多少。比如属性池编号对应的是防御,属性值字段对应100,就代表提升防御100。数据类型:整型。
17.属性池参数
备用字段,根据游戏的特殊需求而使用的字段。数据类型:整型。
怪物表
怪物表中包含了普通怪物和BOSS怪物的数据,字段如下。
1.怪物 ID
怪物在该表中的唯一标识编号,不能有重复编号。数据类型:视项目情况来决定,一般来说是整型。
2.怪物名称
怪物用于显示的名称,可以有相同名称的怪物。数据类型:文本。
3.标注
用于策划自己对怪物的描述,在游戏中不会被调用。数据类型:文本。
4.强度
根据游戏需求对怪物强度的划分,常规做法分3挡:普通怪、精英怪和BOSS怪。数据类型:整型。
5.称号
怪物头顶上的称号。数据类型:文本。
6.AI行为
根据游戏AI设计来划分,一般做法分为主动怪和被动怪。数据类型:整型。
7.阵营
相同阵营的怪物不会互相攻击,不同阵营的怪物可以互相攻击,所以一定要划分好不同阵营的编号。数据类型:整型。
8.类型
怪物的类型划分,这里是广义的怪物划分。数据类型:整型。
0:普通怪
1:多次采集怪
2:单次采集怪
3:建筑怪
4:尸体
9.掉落编号
用来标示怪物掉落物品集合的编号。数据类型:整型。
10.模型路径
怪物模型的路径,用于控制怪物的外观形象。数据类型:文本。
11.头像
怪物的头像。数据类型:文本。
12.攻击间隔
怪物两次普通攻击之间的攻击间隔时间。数据类型:整型。
13.怪物音效
怪物在不同时间会触发不同的音效,具体情况视项目情况来填充。数据类型:文本。
14.复活时间
怪物死亡后距离下次出生的时间。数据类型:整型。
15.追击半径
AI相关字段,追击玩家角色超过这个半径之后,怪物会回归自己原来的位置。数据类型:整型。
16.怪物视野
AI相关字段,决定怪物可以看到玩家并发动攻击的距离。数据类型:整型。
17.怪物等级
怪物等级。数据类型:整型。
18.经验值
怪物附带的经验值。数据类型:整型。
19.移动速度
怪物的移动速度。数据类型:整型。
20.技能编号
怪物可以使用的技能编号,可能是多个技能也可能是一个技能。数据类型:整型。
21.技能概率
用于标示对上述技能发动的概率,数据要和技能数量匹配。数据类型:整型。
22.附带脚本
AI相关字段,有特殊行为的怪物会拥有自己的专属脚本。数据类型:文本。
小结:
虽然以上列举了较多属性,但是也不可能满足所有游戏的需求,静态数据中的字段设计要结合具体的项目需求,大家要活学活用,千万不要人云亦云。