写在前面
最近小忙,原计划每月至少一篇文章的计划也在上个月被打破了。
本着宁缺毋滥的原则,权衡再三还是选择不要水文章。最近之所以很忙,最主要原因就是接手了一些烂摊子,一些原本由其他同事配置的数据表,在这个时间点需要由数值亲自来配置。然后悲剧发生了,原来负责维护配置表的同事,完全没有工具表,而是完全手工配置的。
这就导致特别是像道具这种配置表,大量的冗余数据和问题数据无规律可寻。这也激发了我写这篇文章的诉求,就是跟更多的小伙伴交流如何维护配置表,才不至于坑人坑己。
数值策划的工作内容
数值策划的工作分为开发期和运营期。
在开发期,特别是我这种初级数值策划,其实大部分时间都是在配置数据表,这时候重点就是执行力,为了更顺利的配置数据表,避免出错,提高工作效率。有几个最关键的点
- 首先就是积极参与表结构的设计中
- 其次就是根据表结构和实际需求设计合理的工具表
- 再者就是自己编写或者拜托程序员同事帮忙制作数据检查工具
- 最后就是有方便的本地测试环境和gm指令,在进行大规模的数据配置后在本地进行测试。
本文就是对这几个点进行详细的解释说明。
参与表结构设计
通常情况下,系统模块在策划内部讨论策划案的时候会和数值策划一起,征求数值策划的意见。在敲定策划案以后,数值策划也会和程序一起商量数据表结构。
当然,我说的只是通常情况。但现实可能并不理想。这时候就依赖系统策划和负责程序员的经验。如果两人都没什么经验,那么设计的表结构很可能惨不忍睹。
我们在理解需求之后,依然可以和程序员摆事实讲道理,尽可能将配置表做的理想。
但依然有些情况下,程序员因为怕麻烦而做了一些很蛋疼的配置方式。这时候就只能撕逼了。
什么是很蛋疼的配置方式呢?最常见的就是文本配置,文本配置在项目开发后期往往会成为巨大维护成本的一个点就在于没有进行字符串拼接,比如任务目标是收集若干草莓,如果任务目标是单独配置的一串文本而不是取目标道具的道具名进行拼接,之后道具名改变就会导致问题。
很多人可能觉得我说的例子太过初级,但事实上在实际项目中类似的问题比比皆是。
或者明明一列数据可以解决的问题却要用多列。比如我曾经历过一个技能表的配置,有一列配置技能组,一列配置前置技能,一列配置技能等级,还有一列配置技能最大等级。
你会发现其实一个技能组和等级就足够。但这种配置表还真就被我遇到了。
甚至很多列可能是逻辑互斥的,这就让人不得不怀疑程序员的业务能力。
但是抱怨归抱怨,最终问题还是得解决。程序也就那样了,我们还能怎么办呢?
做工具表!
如何制作工具表
在很多时候,数据表的最终结构可能不如我们想要的完美,这时候就需要我们制作工具表了。
工作中,我喜欢对工具表进行总分的结构,一层层展开。首先是游戏核心调整参数的数值总表,之后便是关于玩家战力和经济成长的战斗总表和经济总表。之后再根据不同模块建立专门的工具表,工具表要考虑承上启下,两个作用,一个是方便数据表配置,另一个就是数据整合和隔离。
按照我的习惯,工具表之间最好不要相互引用数据,而只在父子关系的表之间引用。这样会更容易调整。
另一个难题是和其他策划之间的配合。比如文案策划和关卡策划。之所以说是难题,是因为他们和数值策划考虑问题的角度不同。
通常我会准备一些“接口”文档,定义好字段之后由关卡策划配置(属性和掉落需求),数值策划根据字段配置属性id和掉落id之后由关卡策划回填到游戏配置文件中。
以怪物属性偏向为例,数值策划通常会抽象出兵种种族等概念,最终通过拉表产生数据,但关卡同学对数值不敏感,可能昨天刚跟你约定了狼人猫人的种族,明天就在不通知你的情况下加了狗人。然后沟通半晌才知道狗人是狼人的别称。
或者某一列我们定义为种族,但关卡策划依然将其他属性填在这一列,比如狼人种族,配置上很可能变成了紫皮狼人灰皮狼人这种。你问是新增了种族了?其实也不是,就想区分下肤色。
类似这种哭笑不得的问题,只能是尽可能在流程上规范,利用数据有效性配合,尽可能让每一列的数据是枚举。
而另一个问题依然是流程规范。就是我们这套流程下来,游戏中实际的情况是完全依赖关卡策划的。换句话说,我们和关卡策划约定了强度种族等怪物维度,但依然不知道关卡策划如何在游戏中利用这些怪物。比如在一个关卡中,第一波怪是三个小怪,第二波是一个精英两个小怪,第三波是两个精英,乍一看没问题,但精英的强度可能是小怪的五倍,这就导致难度曲线过陡。为了避免这种情况发生,一方面应该尽可能再前期指定强度规则时候确保和关卡策划的理解没有偏差,另一方面则要在关卡制作稳定后通过实际的游戏体验和来自关卡策划的反馈来对属性进行微调。
最后,再列举几个工作中最常用的公式吧,很多小伙伴问我工作中是公式用的多还是vba。我其实很少使用vba的,只有在进行一些模拟操作的时候用到。
index工具表最重要的功能就是不同表格之间的数据索引
match和index搭配使用,比vlookup更好用
if大多数逻辑判断可以靠if和辅助列实现
max和if搭配使用,甚至可以比较数组这种黑科技
vlookup从前最常用,现在被index取代了。
表格检查工具
其实excel已经为我们提供了很多丰富的数据检查方法。
最常用的比如查询重复值,和筛选结合使用很方便。
更进阶的操作就是利用vba或者python,将准备好的数据导出为游戏工程能识别的配置文件(txt,byte或者csv等),并在导出操作完成后进行数据检查。
这种检查通常包括id是顺序的(这是好习惯),或者某列数据必须在某表中有对应id(类似外键)或者不能为空之类的规则,这部分其实类似数据库。
但其实你会发现,如果工具表足够完善,尽可能避免手填表,那么其实在数据配置期已经很大程度避免了问题出现,扼杀在了摇篮里,因此数据检查工具更多的是守好最后一道关卡罢了。
而游戏中的gm指令,也只能老老实实拜托程序员同事帮忙添加了。
结语
断断续续的啰嗦了很多,其实也不过是我这个初级数值策划的个人工作流程分享罢了。数值策划的工作就是处理游戏中各种数值,其实很容易出错。因此规范流程,活用公式,尽可能避免手填表,都是为了尽可能避免出错。
同时,就是培养数值架构的能力。什么参数应该作为游戏的核心调整参数,什么是模块调整参数,都是在游戏开发过程中不断思考完善的,也是数值策划进步的表现吧。
先说这么多,我是老李,一个做游戏的
除了游戏不会别的
我们下篇文章见吧。