游戏数值策划凭一张Excel表就可以一招鲜?|查错|数据表|管理器|软件安装包
作者:恩皮西
开篇先讲<个人数值设计规范>
实现下文所需的功能,需要的知识:
面向对象编程思想基础知识+数据库基础+精通EXCEL公式+熟悉VBA
树状多表引用结构
多层树状表格关系结构:
可以根据系统层级进行分类,首层应该只有一张表,决定游戏最核心的体验参数。末层应该有3张表。除了末层之外,都属于设计表。下面对上图中的四种种表进行简单分类说明:
设计表:
储存基于各个层级的设计数据。设计数据应该只储存在相应层级,如果各个不同系统之间有强关联,应该用一个上级层级表来规划系统之间的关系和结构。
数据表:
和程序的接口,用于程序读取数据使用,但是也需要策划对该表的检测识别,查错等。
数据表说明表:
用于记录数据表的约定规范,该说明表应当保证数据表的可读性。
枚举表:
约定而成的枚举,用于储存基本的分类和结构,但不是设计数据。
引用和数据管理规则
基于数据库规范的数据管理。只做简单介绍,详细自行学习数据库范式
原子数据:
应当要求设计表中所有数据都是原子性的,一个用于设计的单元格只储存一个数据,用于计算的过程组装数据则不需要适用,同样,末层数据表不需要适用、
0冗余:
同一个信息的数据应当采用引用,而不应该出现在2个地方,对于表格维护有灾难性后果,引用应当符合表格层级关系,下一层级只能引用上一层级数据,如果跨层引用,应当给每个层级都拷贝数据引用区域。
主键关系:
(适用于vlookup)查询关系只依赖于主键:对于range区域(矩阵),应该拥有唯一主键,并且查询关系只依赖主键,同数据库第二范式。同样目标为了明确数据关系,并且更容易配合excel函数lookup系列。
巴斯-科德范式:
每一个码都是完全函数依赖,任何非主属性不能对主键子集依赖,该范式对于数据表是否会出现空数据等情况有良好的改善,适用于大范围不同枚举类型的通用性公式。
表结构
设计表
可读的分组表
设计表表中就应该拥有明确的分类规划,增加可读性并且明确数据影响范围。数据表主要有如下三类数据,分别为参数,曲线,举证。
参数:
决定游戏内某个部分关键数据,该数据是独立的。不受其他数据影响的。
曲线:
决定各类数据的趋势数据,该曲线应该部分由参数决定,如首尾数据,如积分数据,在各类成长系统,线性,离散的不同等级的部分都会用到。曲线常见应该是一个2列或者2行的数据区域。
矩阵:
最常用的数据区域,在excel里占用一个range。是设计表的一个子表。可以独立成为一张小表。该表格会决定各类枚举的设计分布,如不同职业属性。矩阵在过程中也常用于储存数据。
计算过程:
参数+曲线→计算后的曲线
参数+矩阵→计算后的矩阵
曲线+矩阵→计算后的矩阵
计算规则:
数据储存规则:区分原设计数据和计算数据,用不同的颜色区分,在调整数据时应该只修改原设计数据。
数据计算规则:数据计算应该充分考虑各种极端情况以及报错情况,对报错情况进行标识处理,主要是有2个目的,1:暴露错误,不把错误带入下一层级计算。2:优化错误,使允许的错误不影响下一层级计算。
数据表
表格通用信息:
表格名称,表格英文名称,表格类型,
表格所属系统,表格所属模块
表格预留表头前空白区域储存这些信息,方便在各处整理归纳,以及跳转,目录等功能的实现。
关系型数据表
Excel的表格常规是普通二维表格,我们需要通过对字段的管理增加表格关系,从而把它改造成关系型数据表。主要的部分是对字段的规范以及自定义的外键部分。
唯一识别码:
每个字段在所有的表里应该拥有唯一识别码。常用的唯一识别码是:表格名_字段名。该名称应该是唯一的并且和表格中的每个字段意义对应,从而可以树立不同数据之间的关联关系。在有了关联关系之后,就可以对关系的检查以及跳转,大大增加了表格的可读性以及查错能力。
主键:
每张表格应该有唯一主键字段
对于主键的ID应该有一套完整的基于系统结构的ID规范,使ID出现时可以快速了解ID所代表的含义,可读性的ID对于程序报错时查错有非常好的指导意义。但是不要在主键的ID中隐藏信息和机制,如:用ID最后2位代表等级,省去了等级字段,并且还节约了等级遍历的操作。这种行为破坏了数据的原子性,可以在最终的数据表出现,但是任然不建议出现,尽可能的不要在设计表出现,对于数据的拆分组装回变成一个繁琐的工作。对于小型项目,节约程序成本而采用的ID带有大量信息的行为要客观看待,在工作量和可扩展性中做出平衡。
外键:
实现方法
规范化表头:规范化表头主要是为了实现字段的可读性,可是别性,同时可以提供字段之间的关系(外键),用于方便纠错和跳转。
字段类型:主要是用于说明字段的作用,用来区分于其他字段,如:功能,数值,美术,音效,文案
字段说明:和字段外键共同使用,2边格式保持相同,主要是对字段外键的一种说明。
字段外键:使用字段的唯一识别码,和字段的实际结构相同,用于识别院子数据的来源,方便查错和跳转。
字段英文名:程序使用的,也是表内的唯一名称,是主要的字段标记。
字段中文名:同字段英文名,在一般情况下,优先使用英文名。
字段数据类型:用于程序识别的字段类型,可以是标准的数据类型:如INT,LONG,STRING,BOOL等,也可以是程序自定义的如Array,或者程序自定义的类。
规范化名称管理
在公式引用数据时,应该大量采用名称管理器。在大量的跨表的字母加数字的公式参数是几乎没有可读性的。灵活使用名称管理器可以解决公式可读性问题。
一个好的名称管理器的命名规范应该符合以下几点:
1.识别该名称是否为单一数值还是range区域
2.识别该名称准确位置
3.识别该名称的准确含义
4.在修改数值区域范围时不需要修改名称本身
常用的命名规范
全局参数名称
系统名称_参数名称
全局参数不能过多,才能用最简短的命名方法
局部参数名称
系统名称_模块名称_参数名称
矩阵名称
系统名称_模块名称_矩阵内容_举证起始列名_矩阵大小
注意:
1. 系统名称和模块名称应该和表格名称相关联。方便准确查找名称数据位置。对于采用了名称管理器的区域,应当用特殊颜色区分。
2. 名称区域在右边界和下边界预留两行和两列,方便插入数据不需要改变名称本身,同时也能继承以前的区域格式。
表格纠错
1. 外键查找自动纠错,确保外键内容存在
2. 填写枚举部分数据,采用数据验证部分,检测数据合法性
3. 公式数据采用上面提到的错误处理方法,暴露错误或者处理错误
4. 导出工具提供非法格式检测能力。
表格自动化生成
核心参数:提前准备用于宏观控制整个表的数值方向
资源枚举:文案美术音效枚举
属性结构:各种类型的属性结构提前设计(如:标准模型,职业标准模型,种族标准模型,模型关系)
分级结构:对于分级的字段增加限制条件,(如:等级成长模型,星级成长模型)
设计计算方法:可计算属性=F(标记属性) 如,攻击= F(职业标准模型,职业,等级成长模型,等级,种族标准模型,种族)
对于采用标准的设计方法的,末层数据表应该是可以通过VBA和公式进行自动生成的。减少大量的管理成本,可以将主要的经历用在数据本身的设计上。
表格导出
采用程序喜欢的导出格式即可,常用格式不多,并且通用,在此并不多说。
采用vba可以实现一键导出,并且同步版本管理(SVN),以及服务器上传和服务器更新。对于快速纠错提供方便。一组数据的调试修改到表格自动化生产再导出到客户端和服务器部分应该可以在20秒内完成。快速看到数据反馈,你就拥有更多的设计和思考时间。
仪表盘
对于设计数据部分尽可能多采用图标结合的方式,提供更直观简洁的体验,目前没有找到特别好的报表工具等可视化插件,在此不多说,但是excel自带的表格和数据也可以提升很多设计体验。
常用工具
联动查看器。主要采用vlookup函数即可。需要将各类枚举还原成我们最熟悉的语言方便查看。图片部分采用index和Match函数来索引提前准备好的资源枚举。通过名称管理器赋值给图片,来显示即可。图片枚举可能需要批量的导入,可以采用选择性粘贴union编码实现,编码如下:
src="图片路径">
可以加入相关参数控制图片大小。
导出
各类格式导出方法,常用的如下:
XML,JSON,CSN,TXT,LUA
注意各种编码格式,注意utf-8和ansi的区分,注意有无BOM区分。
附加功能
1. SVN提交,服务器提交,可以采用shell来调用SV和服务器的文件传输工具即可。
2. 邮件备份,访问指定的邮件接口,添加附加发送邮件即可。
跳转:
这里需要用到字段结构标记以及关系型数据表中说到的外键。需要表格中有其他表格ID索引的数值都可以跳转过去。主要是对组装好的数据根据数据格式进行拆解成为原子数据,并且对原子数据的外键查找,在通过搜索找到对应的原子数据的位置,这样可以应用于大量的数据查看工作简化,如,查看英雄,查看技能,跳转到技能部分,查看buff,跳转到buff部分。
目录:
为表格指定的模块提供快速的打开隐藏功能,从而可以在一张表上管理大量的sheet而不会感到困难,可以通过表格的表头规范来自动生成目录部分。
集成:
对于及其常用的功能应该集成到一个通用的用户界面,如:工具箱。
对于需要选择区域的常用功能,应该集成到右键部分,这样可以快速使用。
第三者访问:
表格功能中有大量与路径绑定的部分,对于路径管理需要有统一的入口,为了方便其他同事对表格的使用,应该提供各类路径设置的功能。不然表格更换机器和路径后功能则会失效。
几年前写过一篇文章《个人数值设计规范》,总结了我设计数值时的一些要求,但是很多人看了无法理解为什么需要这样的规范以及怎么应用这些规范。我决定开一个坑,来作为解释设计规范样例。该样例是一个真实的项目的完整数据表,包含一个多年项目的全部数据表和设计表。
游戏类型:slg
设计方向:强交互的收集养成。
后面的主要内容是,不同系统在表格上是怎么设计怎么执行的。额外的功能工具是怎么设计的。项目年代久远,可能有一些错误,我也可能会随时修改这个文章。
表格的制作是一张总表,通过自己的代码来实现目录切换。从而管理超过200个分页的sheet来使用。表格主要是我个人使用以及其他策划和测试的阅读和使用。项目中只有我一人作为数值,所以采用总表较为方便,只有我一人进行表格修改,所以也不会出现冲突问题,
总纲
下面我列出了一些可能要讲的主题。
目录
一般情况下一个项目设计数值表也是从目录开始做起,但是在真正做表之前一般会对系统结构和项目定位先做清楚,但是为了方便看表格,我还是先说一下目录。
目录的存在主要是为了自己方便,也是升级了几个版本,最原始,只是表格加上链接,让我快速的找到对应的表格。是下面这个样子的。
但是很快,当表格数量扩张的时候,它就不够方便了,于是自己做了一个目录。就变成下面这个样子了。
这个目录分为几块,主要功能就一个,快速找到对应的表。。以及一些功能按钮。我逐一介绍,如果涉及到其他部分的功能,会在后续的文章中讲解。
一、顶部功能区
就是这一部分。
1.1左边三个按钮
是为了查看表格汇总使用的,第一个按钮用于打开三个汇总sheet。分别为
在项目后期他们的用处就很小了。
第一个表格基本就是罗列了这里面的所有sheet。
接下来说字段管理表,这个稍微有点用处,它把真个表里的每个字段都展示出来,可以检查一些字段命名错误或者表格格式错误。表格格式我稍后讲到,因为没有一个规范的表格格式,是没法做出目录的。
这里可以看到,我给每个字段设计了一个唯一识别号,是表格名称(不是sheet名称)加上字段名称实现的,这个可以帮我们快速找到指定的字段,后期其他工具对应指定字段的查找也是有用的。
最后一个表格关系表,就没什么用了。就不介绍了。原本是像做一个网状的表格引用关系的可视化图,后来没有时间去实现,对于项目本身也没有什么用处。
1.2启动右键功能
因为右键的功能是基于excel的,而不是基于表格的,所以在更换电脑使用表格时,会没法使用右键的功能。所以增加了这个按钮。右键我通常会增加一些使用频率很高的功能。
可以看到,这里有工具箱,信息,编辑文案,显示路径,文案配色,识别号跳转等功能更,这些功能我在后面会介绍。
1.3更新客户端svn
不管你在什么项目组,总会有一个版本管理工具,可能是svn,可能是git,你总要反复更新,使用频率很高,这里做成一个按钮,方便使用。功能很简单。代码非常简单,但是你要安装svn的时候安装命令行工具才能使用,在安装的时候有一个选项,没有的话重装一下就好了
代码如下:
Sub更新SVN客户端()
code="cmd.exe/csvnupdate"&"D:\SVN\Galaxy\client"&"&&pause"
CallShell(code)
EndSub
二、中央功能功能区
中央功能区的关键功能只有一个,找到核心表格,这块代码稍微难写一点,可能是我没有找到好写的方法,好在只用写一次,对效率要求也不高,代码不好就算了。
左边三个区域,总表,规划,查看器,规划表,都是手动设置的连接到指定的sheet的。点击就打开,代码也非常简单。
Sub查看器()
开关某页BYstring("飞船查看器")
开关某页BYstring("飞船查看器2")
开关某页BYstring("怪物查看器")
开关某页BYstring("英雄查看器")
EndSub
Function 开关某页BYstring(i As String)
If Workbooks(ThisWorkbook.name).Sheets(i).Visible = xlSheetVisible Then
Workbooks(ThisWorkbook.name).Sheets(i).Visible = xlSheetHidden
Else
Workbooks(ThisWorkbook.name).Sheets(i).Visible = xlSheetVisible
Workbooks(ThisWorkbook.name).Sheets(i).Select
End If
End Function
基本就是显示出来。右边的区域就稍微复杂一点,首先,把表格分类为系统。在中间区域把所有的系统显示出来。然后实现,点击,在右边把该系统的所有表格显示出来。
这些代码稍微有些复杂。
在实现这个功能之前,我们需要对表格有一定的规范要求。你可以制定自己的规范标准,我在这里说下我是如何制定的。
我的每个数据表大致是这样的。
1. 设置返回按钮,功能为隐藏该sheet
2. 设置到处按钮,功能为到处数据成制定文件,这里是csv到指定的文件夹给程序使用,它同时包含了提交功能,会自动提交到svn,这部分在导出部分再说。
3. 提供说明信息按钮,点击后跳转到一个说明sheet对这个表格进行说明,稍后展示,主要是说明这个表格的规范,枚举等。
4. 表格名称,它固定的在B1单元格
5. 系统名称,它固定在D1单元格
6. 表格类型,它固定在F1单元格
7. 预留行4,第四行为字段类型,在后面会用到,说明字段的内容。主要有,功能,文案(做多语言时需要),美术(改动频率较低),数值(改动频率较高)
8. 预留行5,这是一个外键,和格式说明,如果这个字段来自其他表格,这里要说明,如
这里可以看到,这个字段应该填写4个技能id,前三个来自主动技能ID,最后一个来自被动技能ID,这里填写的数据应该在对应的表格对应的字段找到,不然你就填错了。
9. 预留行6,对于外键的中文说明。基本上是对预留行5的中文解释
10. 预留行7,这是字段的标准名称,它是被程序识别的名称,也是从这一行起,后面才是到处的数据内容。
11. 预留行8,这里是字段的中文名称,主要是帮助理解。
12. 预留行9,这里是字段的类型,程序识别用,自己也会识别,有可能会存在和程序商议的特殊字符格式。
13. 后续的才是表格的数据内容。
关于规范3,我们这个例子是英雄表,英雄表的说明是这样的:
这里束缚了某些字段能填的值和意义。这里必须记录,不然会完全忘记,例如种族,我们能填写0-4,但是含义很容易忘记,如果及时的更新在说明表里,就可以任何时候查看。
基于上面的表格格式,我们可以遍历整个数据表,找出所有的系统和所有的表格。
先看刷新目录,它的功能是删掉前面的系统标签,然后遍历整个表,重新生成所有的系统标签。下面是刷新目录按钮的代码。
Sub 自动化目录()
num = 1
Dim 系统字典
Set 系统字典 = CreateObject("Scripting.Dictionary")
Dim 系统 As Worksheet
For Each 系统 In ActiveWorkbook.Sheets
If 系统字典.exists(系统.Range("D1").Value) Then
ElseIf 系统.Range("D1").Value = "" Then
Else
系统字典.Add 系统.Range("D1").Value, num
num = num + 1
End If
Next
'清除原有按钮
For Each s In ActiveWorkbook.Sheets("目录和说明").Shapes
If 系统字典.exists(s.name) Then
s.Delete
Else
's.Delete
End If
Next
num2 = 1
按钮行数 = 7
'这段代码有毒
For Each a In 系统字典
If (a = "") Then
Else
'位置X,位置Y,宽,高
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 250 + 120 * Int((num2 - 1) / 按钮行数), 140 + 32 * ((num2 - 1) Mod 按钮行数), 100, 25) _
.Select
'Selection.OnAction = "'打开系统""" & (a) & """'"
Selection.ShapeRange.ShapeStyle = msoShapeStylePreset13
Selection.ShapeRange(1).OnAction = "自动化分级目录"
Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = a
With Selection.ShapeRange(1).TextFrame2.TextRange.Font
.NameComplexScript = "微软雅黑"
.NameFarEast = "微软雅黑"
.name = "微软雅黑"
End With
Selection.ShapeRange(1).name = a
End If
'message = message & a & vbLf
num2 = num2 + 1
Next
End Sub
这样就能够生成一个中间的系统列表标签了。如下
很古老的代码了,我后续的项目也在沿用,代码都不需要修改。刷新目录按钮给后续的系统页签增加了OnAction = "自动化分级目录"功能,这段代码我也贴出来,它是为了实现点击系统页签展示页面页签存在的。
Sub 自动化分级目录()
'************获取系统名称********************************
c = Application.Caller
ActiveSheet.Shapes(c).Select
系统名 = Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text
'**************搜索表格**********************************
Dim 表格字典
Set 表格字典 = CreateObject("Scripting.Dictionary")
Dim 表格总字典
Set 表格总字典 = CreateObject("Scripting.Dictionary")
Dim 表格管理区域 As Range
Set 表格管理区域 = ActiveWorkbook.Sheets("表格管理表").Range("A10:E500")
For Each 表格 In ActiveWorkbook.Sheets
If 表格.Cells(1, 4).Value = 系统名 Then
表格字典.Add 表格.name, 表格.Cells(1, 4).Value
Else
End If
If 表格总字典.exists(表格.name) Then
Else
表格总字典.Add 表格.name, 表格.Cells(1, 4)
End If
Next
num2 = 1
按钮行数 = 15
'*******************清除原有按钮*************************
For Each s In ActiveWorkbook.Sheets("目录和说明").Shapes
If 表格总字典.exists(s.name) Then
s.Delete
Else
's.Delete
End If
Next
'这段代码有毒
' ActiveSheet.Shapes.AddShape(msoShapeRectangle, 780, 100, 100, 23) _
' .Select
' 'Selection.OnAction = "'打开系统""" & (a) & """'"
' Selection.ShapeRange.ShapeStyle = msoShapeStylePreset16
' Selection.ShapeRange(1).OnAction = "打开系统"
' Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = "打开全部"
' Selection.ShapeRange(1).Name = 系统名
ActiveSheet.Range("o6").Value = 系统名
Dim MyT As Long
MyT = timeGetTime
For Each a In 表格字典
If (a = "") Then
Else
'位置X,位置Y,宽,高
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 650 + 180 * Sin(num2 * 3.165 / 20 + 3.14 / 5), 250 - 200 * Cos(num2 * 3.14 / 20 + 3.14 / 5), 120, 25) _
.Select
'Selection.OnAction = "'打开系统""" & (a) & """'"
Selection.ShapeRange(1).IncrementRotation -50 + num2 * 8
Selection.ShapeRange.ShapeStyle = msoShapeStylePreset17
Selection.ShapeRange(1).OnAction = "打开表格"
Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = a
Selection.ShapeRange(1).name = a
With Selection.ShapeRange(1).TextFrame2.TextRange.Font
.NameComplexScript = "微软雅黑"
.NameFarEast = "微软雅黑"
.name = "微软雅黑"
End With
End If
'message = message & a & vbLf
num2 = num2 + 1
'Do
'DoEvents
'Loop Until timeGetTime - MyT >= num2 ' 等于 5000/1000 = 5 秒
Next
ActiveSheet.Range("A1").Select
End Sub
这样就能够实现中右部分的功能了。如下:
代码里有一段被我注释了这段代码有毒的代码,那段代码在逻辑上似乎是正确的,但是会导致excel无法保存。我研究很久也没弄清楚是为什么,假装它是一个excel存在的关于图片的bug,然后我采用了另一种方法实现,不过有兴趣的可以研究一下,然后找到原因给我留言。
三、底部功能区
这部分主要是储存和设置一些文件路径,给svn和导出使用的,增加了一个方便更改的按钮。主要是其他同事在使用表格的时候,本机的路径和你的不一样,就无法正确使用到处和svn相关功能,所以增加了这部分。
规划表
一般情况下,我在做一个项目之前会按照树状结构去从宏观参数,细化为关键参数,再细化为系统的相关参数,再去制作系统的数值的。这样我们需要一个规划表来实现这个设计思路。一般情况下,我使用三个sheet来实现,分别为
1. 总节奏控制
2. 战斗
3. 经济
2.1.1 总节奏控制
这张表至关重要。里面用到的参数会被整个游戏引用,它会决定游戏的最宏观结构。做这张表的时候,要仔细思考,和团队最能管事的人讨论清楚。因为这张表里面的所有数字都非常重要。修改这张表的参数会导致整个游戏的数值产生变动。
每一个游戏的总节奏控制的参数不一定相同。但是如果你觉得它是在整个游戏之上的参数,请列到这张表里,我会给大家展示我的这个表里存折哪些参数。这张表也并不是在项目的开始阶段就会完成的,但是你总要预留这样的表,有些不确定的数字可能需要在项目中不断的修改,但是每次修改都需要非常慎重。
一般情况下,一个参数都是为了解决一个关键问题。
核心参数1:角色满级时间
核心参数2:角色满级等级
核心参数3:英雄满级等级
核心参数4:体力经验比
核心参数5:体力恢复速度(分钟)
核心参数6:单场战斗回合数。
核心参数7:基地满级等级
如图所示:
核心曲线1:主角等级时间曲线
核心曲线2:英雄等级时间曲线
核心曲线3:普通副本时间进度曲线
核心曲线4:精英副本时间进度曲线
核心曲线5:基地等级时间曲线
如图所示:
关键时间进度的分配和预留:
还有很多其他相关的曲线,是做后续系统后觉得非常重要列在这里统一管理。
如:飞船成长线,飞船消耗线。
2.1.2战斗
战斗部分所储存的关键参数往往是属性相关。各类加成占比,如飞船的各类属性分配参数。如下。
战斗相关的各类加成以及等级分配的参数,我做成了以卡片的形式存在,如,飞船卡。
飞船等级卡
提示:我表格中灰色部分,往往代表该参数由计算得出,不应该直接修改。他们应该是由更基础的参数计算得出,需要修改更基础的参数。
英雄加成卡
官职加成卡
科技加成卡
这张表里我没有储存英雄本身相关的参数,因为它过于重要,统一放在英雄规划表中。
2.1.3经济
一.价值
经济表中最初关键的是各类货币价值参考,请注意这里是只做标准参考,而不是完全遵循。主要原因是,货币分类为2种,1非通胀类(和时间等比,和rmb等比)2.通胀类,随着时间和游戏进度简直不同。在设计货币价值时,是否为通胀类货币非常关键,对于通胀类货币的价值在不同阶段的表现要单独关注。下面我列举我的表格里的相关参考。
1. 货币价值
2. 时间价值
二:玩家时间
这里主要是做一下初步的玩家每天各种玩法的战斗时间,玩家极限在游戏中可以直接游玩花费的时间,主要是各类活动的次数。这个设计往往决定游戏肝度。这个参数也可以放在总节奏控制表中。
三:经验曲线。
如,主角经验相关参数。
四:货币产出分配和经济流图
下面是各类货币和系统的产出对应图。
下面是经济流图
五:各类经济曲线,这个就非常复杂,篇幅很多,只举例部分,剩下截图。
六:星战的核心经济参数
七:飞船经济相关分配卡
这里不做介绍直接上图。
总表
总表这里主要是有2张表,实际上表里有3张,曲线总表以及不用,曲线都在经济表里。
这里只有属性总表和参数总表。
1. 属性总表
我们需要对游戏中的所有单位的所有属性非常属性并且唯一规划,这样我们能大大提高和程序的沟通。我在这张表里,给游戏中的所有属性和分类做了列表,大大节约了和程序的沟通。
这是一张非常大的表,我猎取部分给大家看一下。以及说一下我怎么使用这个表
你可以看到,我这里对英雄的所有属性进行了编号,100-137,对分类进行了编号。对枚举进行了编号,这些编号在后期填表时会有很多方便之处。特别是在技能,buff,科技相关。例如,有一个科技的效果是增加英雄生命上限10%。我可能配置为。C01;100;10%以这样的语义表达式,可以省去程序大量的单独写代码的工作量,大大增加开发时间,而且在游戏中出bug的时候也可以快去的找到指定参数。对于枚举也可以单独运营,例如,对于人类造成伤害提高10%,C01;M010400;100;10%.
后面截图给大家看一下其他类型的相关属性。
2. 公式总表
公式总表实际上更加简单,就是罗列游戏中所有用到的公式,方便查验。
这张表里还有2个额外的东西,是项目特性所需要的,一个是对ui界面所有数值进行解释,告诉程序显示的究竟是什么值,另外这个值是受不同状态影响前还是影响后的。
这张表超过900行,我截图目录和一些样例来讲解。
可以看到游戏中各个系统都有大量需要计算的东西,程序经常需要查看,测试也需要根据这张表去检验程序的工作是否有bug。
给大家距离展示一下一些公式。如影响展示界面。公式说明:
在这里不但要说明公式是如何计算的,还要告诉程序相关的值在哪里可以取到。如标准模型血量= Config.BarHeroHPModel,在config表下的BarHeroHPModel参数可以获得。
另外,为了方便校验,我在右侧提供了验错工具,输入对应的参数,直接获得结果。
橙色部分为输出区域(我所有的表都是这样)程序检测的时候,只要指定一个英雄,把相关参数输入在这里就可以计算出最后的结果,而且每个步骤的结果也都显示出来了。非常方便程序检查错误。
再比如说升级。
同样的方式。
公式总表的第二部分是关于界面显示的,主要是告诉程序,ui界面上的每个参数显示的是什么,是怎么计算的。例如。
对于可能的动态参数,说明是否受到科技影响以及受到哪些科技影响。以及技能影响。
好了。就介绍到这里吧,后期更新随缘了(可能就不再更新了)。
网友评论