关于数值策划在使用Excel表时的一点想法

在之前的MMORPG项目中,我曾经迭代过3版自己设计的数值表,新的一版出来后都对上一版有很大的改进,也算是对我在做数值策划不断进步的一个见证。

最开始的一版设计出来后,粗略地看是有点晦涩难懂的,而且跟组内其他同事讲解设计思路的时候,需要自己顺着Excel表的公式引用一步步查找,然后还要将Excel公式的意义还原,方便同事理解。这个时候,每一次讲解就相当于自己在脑海里重新设计一版数值了,耗费了大量的时间,效率很低。后来就开始琢磨迭代第一版数值,保证自己在过一遍的时候,能够比较顺畅,思路能够清晰,于是对每一步的结果是如何得到的都进行了说明和解释。当第二版数值出来的时候,我就去找主策,跟主策讲解整张数值表,发现效果比之前要好很多,也快了不少。但是似乎还是不够,因为在讲解的过程中,发现主策是需要根据我一步一步的说明往下深入,直到我讲解完,才能够提供给我一个后续深入的想法或者优化意见。这时候发现,自己设计出的表让其他人去读,似乎并没有得到很大的改观,其他人需要找到一张表的起始位置,然后结合我给出的说明一步步往前推,但中间的一些结果其实他们并不怎么关心。其实这个时候,大体就明白了建表的需求了。后来完成的第三版设计,有了更大的改进,也反过来验证了我的想法。整个的历程大致就是这样的,下面我就把一些在使用Excel表时的一些tips列出来供大家参考,也供自己后续不断反思。

数值表的需求

  • 数值策划的需求:提供输入数据(参数)来源、必要的中间结果、最后的输出数据,方便数值检错、数值调优
  • 其他人的需求:提供必要的文字说明、流畅的数据流体验,方便数据逻辑上的理解
对于数值策划的需求,这个是最基础的,也是必须的。必要的中间结果需要根据项目的具体系统提供具体内容,这步没有做好的话,在设计完数值表以后去检错、调优,效率会比较低。对于其他人的需求,其实这算是用户体验方面的内容了。这点上面感觉很少有人会去关注吧,之前在一个数值群里看到一张图片,一个公式中嵌套了多个IF和其他函数,当时真是惊呆了,这样的公式一旦有个小改动就完蛋了。对于一个负责任的数值策划来说,不仅仅要将数值感受的体验做好做强(对外),也应该关注一下自己建表用表的体验、讲解Excel思路时其他人的体验(对内),不要求做的表格多好看,只要做的逻辑清晰、读表流畅就OK了。

Tips1:对数据进行分类处理

  • 数据类型分类

一般而言,一张表中主要会产生四类数据:输入数据(参数变量)、中间结果数据、统计数据、输出数据。
  1. 输入数据(参数变量):这类数据是原始数据,需要在进行计算时事先提供,后续数值调优是根据调整输入数据来完成的
  2. 中间结果数据:这类数据是在进行多步骤时的运算,保留下来的一些过程中的结果,后续的数值检错需要用到这些数据来进行定位
  3. 统计数据:这类数据主要对中间结果数据或者后面的输出数据进行统计,可有可无,可归并到两者中,辅助用来观察数值调优的效果
  4. 输出数据:这类数据就是我们设定的目标数据
可能不同的数值策划有自己不同的分类,但是做了分类处理,在数据的查找上就不会太浪费时间。
  • 数据区域分类

结合上面的数据类型,将不同类型的数据放置到不同的Excel表区域中。为了便于理解以及阅读习惯,区域按列从左往右进行划分,依次为输入数据(参数变量)、中间结果数据、统计数据、输出数据。
  • 数据颜色分类

结合上面的数据类型,将不同类型的数据赋予不同的背景色。这样做的目的也是为了方便快速查找,毕竟我们对不同颜色还是非常敏感的。这里,最好将背景色的区分度做强,将数据界线划分明显。

Tips2:不同表之间保持一致性

  • 保持不同表之间数据类型分类的一致性
  • 保持不同表之间数据区域分类的一致性
  • 保持不同表之间数据颜色分类的一致性
如果你设计的第一张表的输入数据标识为绿色,那么后面其他的表的输入数据也应该设置为绿色背景色,尽可能保持低的理解认知成本。同样的,不同表之间的输入数据区域尽量统一放置在表的最左方。

Tips3:添加必要的文字和公式说明

这条tips的内容不同于我们平时写的数值文档,数值文档上面主要是包括数值策划提供的配置内容以及逻辑规则或公式,方便程序完成不同系统上数值方面的实现代码,只需要让程序知道如何实现即可,至于为什么是这样实现的则放在这里进行。
你需要在每一张Excel表中开出一块区域专门用来对表中计算的每一个数据进行必要的文字+公式说明。如果某些数据的计算是通过VBA实现的,可以在相关代码中进行标明,可以在每一个Sub的上面进行注解,也可以在Sub中的相关代码进行标注。
这一条tips存在一定的工作量,如果选择不做,可能你做出的表过一周就不记得结果是怎么一步一步得出来的;如果选择做,建议你可以在每天下班以后进行补充,这样不会影响建表效率,同时延后一点总结有助于进行数据检错。会有这么几个好处:
  • 适当让自己慢下来,总结之前设计的思路和反思
  • 数据检错,就像做完考题后再回过来进行检查,减少出错的几率
  • 加深记忆,有了文字/公式说明,就不用过很久跟其他人讲解的时候花费更多的时间再去推导一遍
  • 如果以后不得不离开公司,方便交接工作

Tips4:不同表之间的跳转

一个游戏的系统和玩法会很多,每个系统或玩法都至少需要用到1张表,做到后面你会发现你的Excel表已经有几十个分表了,这个时候就需要不同表之间快速跳转来免去我一张表一张表的查找了。
关于数值策划在使用Excel表时的一点想法 - 建筑学概论 - Seven的部落格
  Excel表有提供表与表之间的跳转功能,就是上图中红色区域,右键点击就会弹出一个选择不同表的框供跳转表格。个人觉得这个操作步骤有点多,所以基本上我不会去用这个功能,都自己会在第一张表建立目录,然后之后的每一张表都会提供一个返回目录的功能,极大的缩短了我找表的时间。如果你的目录表设计的不错,就更不用为找表而烦恼了:)。

Tips5:单元格公式的简化

  • 函数个数的简化
如果一个单元格用到的公式里面包含了十几个函数,看着都累,还容易出错。所以,尽可能的减少公式里使用函数的个数,尽量控制在5个以内,最好是3个。如果存在IF语句嵌套,最好在2层IF语句以内。如果计算步骤实在多,完全可以使用辅助列来帮助解决问题。
  • 函数替代
Excel中可以用很多函数来实现相同的功能,比如反向查找功能,可以用sumifs函数实现,也可以用vlookup+if函数或者vlookup+choose函数来实现。在这里,选择一个高效的函数是十分必要的,越是到后面,高效函数带来的效果越加明显。这里,没有很多规则可言,不过能不用数组计算就尽量不用。
这条tips做好了,能够减少Excel表的文件大小容量,第二版数值出来,我拿去跟第一版数值表对比的时候,我深有体会。同时,也能加快Excel的运算效率,方便后面进行数据调优。

Tips6:利用VBA处理复杂过程

如果计算时涉及到一些逻辑层面的复杂过程,可以考虑使用【按钮+VBA】或者自定义函数模式进行数据运算。

Tips7:输入数据(参数变量)做详细说明

这条tips的想法是来自于我转载的文章《AI中的参数系统设计》一文,把这篇文章的想法放到这里来也是通用的。
输入数据的详细说明尽可能满足以下几个部分
  • 用于识别的名称(中文)、字段(英文)
  • 数据类型:整型、浮点型、字符串、长整型、字节型......
  • 当前值:该参数当前的合法值,保证数据能跑通
  • 数据的定义域:数据的数值在定义域内是合法的,用来检查合法性使用
  • 参数描述:对于该参数的简要描述
  • 趋势描述:对于该参数的变化所带来的影响的简要描述
  • 引用关联项数组:该参数所影响的参数项列表(P1,P2,...,Pn)
  • 被引用关联项数组:影响该参数的参数项列表(P1,P2,...,Pn)
在具体落地实现的时候,其实只是将最早的数据名称+数值这种结构扩展到上面的参数系统结构而已,在Excel表中其实只是额外的增加了几列内容。而这几列内容能够在你进行数值调优的过程中,指导如何进行参数大小的调整来逐步逼近想要的结果。

Tips8:逻辑从左往右进行

跟上面的输入数据区域分类一样,保持上一步的计算结果显示在下一步的计算结果的左边列,主要是为了减少理解成本,跟代码中尽量减少使用loop语句是一个道理。

Tips9:禁止工作簿与工作薄之间的跨表链接

不同工作薄之间的跨表链接会带来很多问题,比如表打开时的数据更新问题、表自身的容量也会因跨表链接而增加等等。之前做的项目因为有使用跨表链接而带来了很多不必要的麻烦,经常出现刷表失败,或者刷完表后进入游戏查看发现效果不变(因为你更新了一个工作薄的数据后,还必须打开关联的工作薄进行数据更新,当时简直哔了汪了)。
所以,不要进行工作薄与工作薄之间的跨表链接,同一工作薄内各个表之间的跨表链接是允许的,不会出现什么问题。如果因为工作表数目过多,而必须进行工作薄跨表链接,建议把需要跨表的数据放置在一个区域中,方便管理。
 
关于自己在使用Excel表时的一些小tips,大概收获的就是这么多了,后续在以后的工作中有想到,会接着在这一并补充 :)
原文地址:https://www.cnblogs.com/architecture101-gbt/p/8303582.html