数据表(二) - 数据表的制作方式

news2024/11/25 3:56:52

本篇来介绍下数据表的几种制作数据的方式。

Excel是大部分数值策划选择用的填数工具,因为Excel是天生为数据处理而生,而Excel转为什么格式就需要选择了。

最简单的就是直接将Excel里的数据复制黏贴到文本文件作为游戏数据。这种简单快捷的方式任何人都能做,但问题是当需要多个Excel转化为文件数据时,我们就遇到麻烦了,每次都要手动复制粘贴一遍所有的Excel数据文件到指定的文本文件中,这种人工手动操作的事,常常会引起不少麻烦,当我们手动导入我们常还要想想,是不是复制粘贴错了,有可能是真的操作错了或者只是自己健忘。在最初的几年的程序开发历程中,为了让Demo加快进度,也这么干过,总是会需要我们查好几次莫名奇妙的数据表错误问题,其实都是因为人脑的极限,人脑对重复的工作有自己的极限,到达了这种枯燥的极限,我们就会增大犯错的概率和次数,于是时常会因为重复劳动太多次而出错。

有比较简单的直接Excel手动另存为导出CSV,就有了CSV的一个规范。 这样既有了规范,又不怕复制粘贴错误。不过不要高兴太早,这样依然会有很多问题,比如当我们导出多个文件时,我们枯燥乏味的重复劳动还是很多,出错的概率依然很高。

于是为了避免出错概率和次数,自动化和流水线是成为了进阶的方式,将所有需要人工操作的流程,全部写入程序,让程序来帮助我们完成我们想要完成工作。

主流的制作自动化程序方式有很多,例如使用Shell或Bat(window批处理)设计自动化流程操作,在Mac或Windows下执行我们编写的批处理文件就能自动一步步地执行我们规则的操作步骤。

也有自己通过特定语言写自动化程序的,比如C#从Excel中读取数据后写入特定文件,会使用.Net库,或者其他第三方库来取得Excel里的数据,再将数据以自己希望的格式输出到文件中。

很多同学还使用Jenkins来强化自动化流水线。Jenkins可以认为是一个电脑中待命的程序,它有自己的本地站点,可以通过网页的形式,添加我们需要执行的操作或程序命令,还可以设置运行的时间和次数,每次运行结束都会有失败和成功的信息显示,还会有很多错误的日志记录在里面。

Jenkins是很多公司的自动化流水线必备工具,比如打包,转换数据表,同步上传,自动化检测,自动运行等功能被广大的高级程序员所喜爱。

当然Jenkins也不是万能的,并不是说一定要使用它,我们也可以有自己的流水线制作途径。Jenkins只是多了一个可视化的Web页面,它同样需要借助特定的语言,比如Shell或C#或Python或Ruby等来编写我们需要的操作过程,甚至这些语言的组合起来的操作流程也是很常见的。如果这些你都不太熟悉,还可以使用Unity3D的菜单栏编辑功能,实现点击菜单栏按钮后执行一套相关程序,也是种不错的选择。

自动化流水线的最终目标是让人力成本降到最低,节省所有能节省的精力消耗,把所有人员的注意力都集中到核心问题上去,比如框架,核心战斗,变化多端的渲染方式等。

让数据使用起来更加方便

用什么形式的文件作为数据表并不最最重要的,CSV也照样能把游戏跑得很好,因为这些技术并不能决定游戏的性能会有大幅的偏差,只要我们喜欢,什么形式都可以。很多时候,我们在选定数据存储规则时,大都选择的是自己喜欢的方式去规划,并且符合团队做事风格,因为这能给我们带来很大的工作的效率,沟通的效率,也加快了开发速度,让团队不用这么痛苦并且浪费时间去适应新的规则。

数据表的关键作用是连接游戏策划设计师与其他部门的桥梁,所以我们在指定数据导入导出规则的时候需要考虑设计师们体验的因素。如何让策划在配置数据表的时候能够有更好的体验就成了关键,好用是关键。

为什么要好用呢?只有好用才能提高效率,同事们都用着舒心顺畅,无意中降低了工作中的精神损耗,减少了精力损耗,打通了沟通交流上的问题,从而提高了效率。

前面提到的自动化就是提高效率的一种方法,还有比如一键转化XXX,这种形式的也是提高效率的好办法。

一键转化Excel到其他格式是一个比较人性化的工具,不需要人工手动去转化,通过工具就能搞定,只要数值策划按照你们双方约定的规则就行。这能大大提高数值策划与程序的协调性,一个系统,一个模块,需要什么数值,什么类型的数值,数据表建立的流程,在你们约定的填表规则上,建立,读取,转化,变得轻而易举。这种在规则下,大家都遵守同一规则,减少了沟通时间以及沟通的障碍,彼此能默契的合作,是多么高效和舒心。

不过只有自动化,或者只有一键XXXX的功能,还是不够。这些只是工具,我们要的是团队间的,特别是部门间的,不同工种间的配合,能顺畅无障碍。

如果只是单个表有了自动化,策划设计人员可以自由的将Excel数据转化成能让程序员读取的数据格式,但是策划设计人员一直在对数据进行变动,特别是对字段的类型,字段的名字,一直在变。今天这个字段定义为id,明天这个字段成了是time了。或者插入了一个新的字段,删掉了旧的字段,或者新增了一个数据表,或者删掉了一个旧的数据表,等等。这让程序员很头疼,每次更改都需要及时得到通知程序员,即使及时得到通知,也会遇到不少的麻烦。

因此我们要再深入加强这种规则的好用性,将单个表,边为多个表的自定义配置,将所有策划内容的数据表和导出规则都由策划来指定填写。

以前每次策划设计人员增加Excel表时,都需要更程序员打招呼说,你帮我把这个Excel表加入到自动化和一键XXX的功能里去。程序员就需要腾出时间和精力来为策划设计人员服务。我们可以把这块工作移交出去,策划设计人员能够可以自定义导出哪个Excel文件,以及Excel文件里的哪个工作簿。这样策划可以自主选择和自主增加表的导出内容。

我们来看怎么做?一个可行的办法是,在程序命令中预留几个参数,这个参数是指向某个需要导出的文件的,以及需要导出sheet。那么在命令行里,执行这个程序并且后面跟上参与就能导出数据。

但是批处理写命令行也好,shell写命令行也好,毕竟还是程序级别的。策划并不能很好的控制对表的导出内容的增加和修改。 比如我需要新增一个表,或者修改某个表的文件名,或者修改导出某个表文件里的sheet,这项工作还是需要修改命令行的,或者说修改批处理文件,或shell文件的。策划并不会改,或者说并且这种命令形式并不直观。

再次加入规则,让自动化和一键XXX更加人性化。我们可以增加一个Excel表,表里面填有具体要导出哪些Excel文件里的哪个sheet,这些sheet的数据导出后的文件名是什么,以及生成文件后,文件应该转移到哪个文件夹中去。这样策划就可以自行定制,我们需要用哪些Excel里的哪些sheet,可以自行增删改,可以完全自给自足了。策划设计人员完全能够主导所有数据的导出工作和转移工作都了。

还不够。虽然这样方便了策划设计人员,但程序员的麻烦还没解决,如果设计人员改了字段名字,插入了新的字段,删除了字段,又没有及时通知程序员,或者说忘记了自己做过什么怎么办,那岂不是要全盘彻查了?不可以,彻查这样的效率太低,不可以让这种事情发生。如果能在生成数据时自动检查与程序的对应关系就好了。

我们再加一个规则,让字段名字与程序对应的规则。用程序生成一群变量定义与每个数据表字段名对应,将每个要导出的sheet里的头行的列名作为变量名字写入程序变量定义中,以方便程序在读取数据表时,列名与数据表对齐,无形中校验做好了。

举个例子,在role.xls文件中,role这个sheet(工作簿)中的第一列字段为ID,第二列字段为Name,第三列字段为Age,那么程序变量自动生成后就成了以下这种格式:


public Class ExcelDefine
{
	public const int role_role_ID = 1;
	public const int role_role_Name = 2;
	public const int role_role_Age = 3;
}

当策划设计人员更改字段后,新增字段,删除字段后,会如何呢,比如第一列ID更改为Identifier,第二列插入School,第三列Age删除后,生成了如下的代码:


public Class ExcelDefine
{
	public const int role_role_Identifier = 1;
	public const int role_role_School = 2;
	public const int role_role_Name = 3;
}

如此一来,在转换数据表后,原来在程序中使用的ExcelDefine.role_role_ID,ExcelDefine.role_role_Age,将失效报错,而 ExcelDefine.role_role_Name则自动转入读取第三列无需修改。

现在程序员不再需要知道策划设计人员修了数据是第几列,策划设计人员忘记了修改哪里也无妨,因为在编译时就会报出相关的错误,提示程序员们,表中的哪些字段进行了修改,你需要向策划设计人员询问具体意向。

到这里,我们有了自动化和一键转化XXX的工具,省去了不少人力,并且加入了规则,让策划设计人员完全可以自己控制Excel数据表的操作,又加入了检查校验和修复的功能,让程序员在数据表衔接部分也得到了很好的检查和校验作用。这个方案可以供大家参考,许多大项目大公司都采用这样的方式,安全又稳定。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/401528.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DatenLord前沿技术分享 No.20

达坦科技专注于打造新一代开源跨云存储平台DatenLord,致力于解决多云架构、多数据中心场景下异构存储、数据统一管理需求等问题,以满足不同行业客户对海量数据跨云、跨数据中心高性能访问的需求。喷泉码具有极高的纠错能力,且具有低延迟、地复…

CnOpenData·A股上市企业数字化转型指数数据

一、数据简介 企业数字化转型是近年来中国社会各界重点关注的领域,但基础数据的不完善在很大程度上制约了相关科学研究的开展。构建合理、科学的数字化转型指标体系有利于学者定量地研究企业数字化的相关问题,也有利于衡量企业的数字化水平。广东金融学院…

Linux驱动开发

一、驱动分类Linux中包含三大类驱动:字符设备驱动、块设备驱动和网络设备驱动。其中字符设备驱动是最大的一类驱动,因为字符设备最多,从led到I2C、SPI、音频等都属于字符设备驱动。块设备驱动和网络设备驱动都要比字符设备驱动复杂。因为其比…

标度不变性(scale invariance)与无标度(scale-free)概念辨析

文章目录标度标度种类名义标度序级标度等距标度比率标度常用标度方法不足标度不变性标度不变(Scale-invariant)曲线和自相似性(self-similarity)射影几何分形随机过程中的标度不变性标度不变的 Tweedie distribution普适性&#x…

蓝牙及其安全技术概述

作者 | 陆杰 上海控安可信软件创新研究院研发工程师 来源 | 鉴源实验室 01 背 景 汽车已成为现代社会生活不可或缺的一部分。车辆蓝牙[1]安全非常重要,因为未经保护的蓝牙连接可能会被黑客利用来获取车辆的敏感信息、控制车辆等,从而对车辆的安全和车主…

12N65-ASEMI高压MOS管12N65

编辑-Z 12N65在TO-220封装里的静态漏极源导通电阻(RDS(ON))为0.68Ω,是一款N沟道高压MOS管。12N65的最大脉冲正向电流ISM为48A,零栅极电压漏极电流(IDSS)为10uA,其工作时耐温度范围为-55~150摄氏度。12N65功耗&#x…

【项目精选】基于Java的愤怒的小鸟游戏的设计与实现(视频+论文+源码)

点击下载源码 基本功能包括:新游戏、载入游戏、控制帮助、退出游戏等。本系统结构如下: (1)新游戏: 需要输入你的昵称; 选择难度:容易、中等、困难、噩梦(每个级别都有5个关卡) (2&…

【Fabric 超级账本学习【3】Fabric2.4 使用Tape进行吞吐量量性能测试】

如果想测试一下超级账本fabric对某个合约函数的执行时间是多少,简单地可以通过打印合约函数开始执行时间和结束执行时间来计算时间差就可以了。 Tape 是一款轻量级 Hyperledger Fabric 性能测试工具。 tape的github地址:https://github.com/Hyperledge…

Spark的基本概念与架构

一、Spark简介 Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交…

(二十五)操作系统--读者·写者问题

文章目录一、问题描述二、问题分析1.关系分析2.整理思路3.设置信号量4.注意三、代码实现1.代码2.改进代码四、总结一、问题描述 有读者和写者两组并发进程,共享一个文件,当两个或两个以上的读进程同时访问共享数据时不…

战斗力最强排行榜:10-30人团队任务管理工具

工欲善其事,必先利其器。在高效的任务执行过程中,选择灵活轻便的项目管理工具来提升工作效率、适应快速多变的发展诉求,对团队来说,至关重要。但是如果团队不大,企业对这块的预算又有限,大型的团队任务管理…

abc 联合索引查 bc索引到底走不走索引?

今天面试的时候,面试官有问到这个问题我说不会,可是面试官说走,网上也众说纷纭,那到底会不会走呢? 先看官网解释不会走: https://dev.mysql.com/doc/refman/8.0/en/multiple-column-indexes.html SELECT *…

响应式操作实战案例

Project Reactor 框架 在Spring Boot 项目 Maven 中添加依赖管理。 <dependency><groupId>io.projectreactor</groupId><artifactId>reactor-core</artifactId> </dependency><dependency><groupId>io.projectreactor</g…

AT32F437制作Bootloader然后实现Http OTA升级

首先创建一个AT32F437的工程&#xff0c;然后发现调试工程配置这里的型号和创建工程选的型号不一致&#xff0c;手动更改一下&#xff0c;使用PW Link下载程序的话还要配置一下pyocd.exe的路径。 打开drv_clk.c文件的调试功能看下系统时钟频率。 项目使用的是AT32F437VMT7芯片&…

ESP UART 介绍

1 UART 介绍 UART 是一种以字符为导向的通用数据链&#xff0c;可以实现设备间的通信。异步传输的意思是不需要在发送数据上添加时钟信息。这也要求发送端和接收端的速率、停止位、奇偶校验位等都要相同&#xff0c;通信才能成功。 1.1 UART 通信协议 一个典型的 UART 帧开始…

3.9多线程

一.常见锁策略1.悲观锁 vs乐观锁体现在处理锁冲突的态度①悲观锁:预期锁冲突的概率高所以做的工作更多,付出的成本更多,更低效②乐观锁:预期锁冲突的概率低所以做的工作少,付出的成本更低,更搞笑2.读写锁 vs 普通的互斥锁①普通的互斥锁,只有两个操作 加锁和解锁只有两个线程针…

奇点云DataSimba发版全解析:“企业级”版本升级,提供最佳组合

近日&#xff0c;奇点云发布数据云产品商业化版本的全新升级&#xff1a;DataSimba&#xff08;数据云平台&#xff09;提供极速版、专业版、旗舰版、红旗版&#xff0c;可靠性、可用性、可服务性再进阶&#xff0c;四大版本满足不同企业选择。 「乐高式DIY」or「最佳组合」&am…

推荐几款主流好用的远程终端连接管理软件

一、介绍 远程终端连接管理软件是管理服务器、虚拟机等远程计算机系统不可或缺的工具之一&#xff0c;它可以通过网络连接到另一台计算机&#xff0c;以执行命令、编辑文件或进行其他管理任务&#xff0c;下面我将为大家介绍几款主流好用的远程终端连接管理软件&#xff0c;并…

Navisworks编辑材质和Revit快速切换材质问题

一、如何在Navisworks2016中编辑材质 初次使用NW2016-2017时发现&#xff0c;原来用于创建编辑材质的小地球不见了&#xff0c;如图1所示&#xff0c;在各大技术群里求助没有回应&#xff0c;度娘搜索也总是摇头。 经过仔细排查可能出现的地方&#xff0c;终于找到了可以编辑材…

数仓生态圈辅助工具之Sqoop导入导出数据和Oozie工作流调度

数仓生态圈辅助工具 知识点01&#xff1a;Apache Sqoop介绍、工作机制 Sqoop介绍 sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具。 导入数据&#xff1a;MySQL&#xff0c;Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统&#xff1b; 导出数…