数据表(一) - 数据表的种类

news2024/11/26 9:59:00

在游戏项目中缺少不了数据表,数据决定了游戏的整个进程,因此怎么用数据表配置数,配置数据时是否方便成了关键的问题。

那么如何来理解数据表的存在呢?数据表完全可以认为是一个本地的数据库,只不过这个数据库里的数据是不可被修改的,是只读的。可以这么说,在实际项目的开发中,它们大部分从Excel里生成出来,再导入到游戏中去的,也有其他的各种方式,比如使用比较原始的方法直接写在代码里,下面的内容中我们来讲讲数据的存放种类。

数据表的在项目中的作用是什么?数据表是连接美术,设计策划,和程序的桥梁。艺术家们用它来配置效果,设计师用它来调整游戏的数值平衡,程序员们用它来判断逻辑。所以数据表的意义非常大,是连接各个环节的桥梁。

===

大部分数据都是在Excel里填写生成的

自从微软创建出神级的Excel后,全世界都爱上了这款软件,无论自用还是商用,制图还是分析都离不开它了。

居我的了解,基本上所有的公司都在用excel。而且,只要跟数据,数字,接触的职业,都会大量使用excel来做数据分析,数据制表等工作。

它能给你所有你想处理数据的功能,而且快捷,方便,易于保存,上手快,方便传播等等等,说不完的好品质。

所以呢,游戏行业里数值策划更是喜欢这个工具了,我们的游戏数据跟excel分不开,我们需要用它的来加快效率,特别是数据开发,数值平衡的工作。

现在你应该明白了,我为何如此夸大的它的优秀,因为他确实在很大程度上加快了项目的进度。

下面说所的数据表,基本上都是意味着从Excel文件中导出来的数据的集合。

最原始的数据方式,代码数据

最最原始的数据,是写在程序里写着的,这种一般都是临时级别的数据,在更改,增加,删除时增加了大量的程序员的工作量。

然而让策划人员去自行更改代码里的数据,不但增加了修改程序的风险,也让数值策划人员批量修改数值的难度增加好几倍。

所以这种放在代码里的数据,基本都只存在于Demo阶段,或者mini游戏中,因为数据量小,更改的次数少,不会特别去在意数值的平衡性。

数据放在代码里的原因就只有一个,快,制作快,使用快,效率快。不需要建立与其他部门的桥梁,只要程序员自己动手就能搞定。不需要像Excel那样,需要建立先Excel表,制定规则,再转化数据,再加载,再解析等步骤后才能使用。代码里的数据,程序员们直接就能用。

因为只有程序员知道是什么,为什么这么写,也只有程序员能看明白,所以当数据使用量逐渐增大,或者使用规则逐渐复杂,或者数据的修改次数逐渐增加,就会渐渐觉得对于小改动的花费的精力太大,效率也大幅降低。

txt文本数据

文本是一种常用的数据表形式,例如用.Json,Xml,Csv为扩展名的文件,里面全是字符串形式的文本,包括数字在内也都以字符串的形式存在,在当程序读取这些字符串内容后将它们转化为相应的数据类型,整数,浮点数,文本,数组。于是这些字符串以怎样的规则存储在文件中是一个比较需要考究的东西了,因为我们还要解析它们。

文本读取规则有很多标准形式的,包括Json,Xml,CSV等,这些都是常用的文本读取规则,在很多情况下用文本读取字符串形式的数据然后按规则来转化成相应的数据和数据组是极佳的选择。它的优点是肉眼能很直观的看到数据,并且也容易查找问题,并能立即直接对文本进行修改,无需其他工具。

像文本这样的数据存储方式,如果为了方便快捷,把数据直接用逗号隔开,或者用空格隔开,或者用特别的符号比如’;’分号等形式隔开,就可以作为一个数据的规则格式,无需其他复杂的协议商定。

还记得我们主要的数据开发工具是Excel么,为了能从Excel里更容易的导出数据,我们会选择一些更加简单实用的导出方式。比如直接从Excel里复制粘贴数据到txt文件,这是最直接的手动导出方式。

也有用Excel直接保存CSV格式的,它是以’,’逗号开的格式的文本文件。

这些都是比较容易的方式,如果要做到不手动,而是用程序工具转化,那就写个程序读取Excel文件内容,程序看以直接导出相应的格式的文本文件。

写一个程序工具来导出Excel的数据,会有很多格式可以考虑,比如我们前面提到的,Json格式,Xml格式,以及自定义格式,每次导出时都会将数据在内存中以一定规则排列好,再导出到文本文件。

通常使用过工具导出Excel数据的同学,以后都会非常喜欢使用使用程序工具导出数据,因为这样会更高效。当他们已经熟悉了这套流程和方法,在制定项目模块规划时,就很习惯性的把程序自动导出数据的模块规划进项目里,对他们来说,这是顺手拈来的事情,而且这事很容易做到,一劳永逸。

这种程序化代替人工操作的事,我们通常称为自动化或流水线。其实自动化是最终的目标,我们希望任何工作都可以自动化来代替,从而减少人工手动操作导致的失误,同时也减少了工作量,减少了同学们不必要的精力消耗。

比特流数据

数据比特流是一种稍微底层点的数据表现形式,他是将数据转化为二进制形式存放在文件里,然后程序通过读取二进制文件,按一定的规则将其转化为所需要的数据。它比起文本形式的数据文件,比特流数据文件特点是,占用的空间更加小,读取速度更快,但缺点也同时存在,通用性差,无法直观和任意的修改。

为什么会更加小,二进制比特流在存储数字时,会直接用二进制形式存储,比如,txt文本中23345是“23345”这个字符串,占用了5个字符,每个字符2个字节,就用了10个字节,而二进制比特流则在存储时可以直接使用二个字节(short)存储’23345‘这个数字,所以数据比特流形式的数据存储文件更加小。一个以文本形式的txt文件来建立的10MB的数据文件,转化为2进制格式后,可以压缩到几百KB甚至几十KB。

一个10MB的文件在读取的时候是很消耗CPU的,假如项目中有几个甚至几十个这样的数据文件,在游戏进行中的卡顿是难免的。这么大的数据文件光读取整个内容就已经很消耗CPU资源了,更别说,还需要在读取文本数据后进行解析。庞大的文本解析工作,让成千上万个字符串转化为数字或者浮点数,会消耗比较多的CPU计算量。

其实比特流数据和数据网络传输时使用的协议是一个道理,有人使用了json格式的数据协议来传输网络数据,所以当数据大时,json字符串占用的数据量也非常大,启用压缩算法也不能解决根本问题。因此很多人转而使用数据比特流形式的数据协议来传输网络数据,以减少网络数据占用量,即使在网络不稳定的情况下,因为体量比较少,能够准确送达的概率也大了很多,从而网络性能也提高了很多。关于网络协议具体内容,会在以后的章节中一一介绍。

以比特流形式作为协议的标准很多。比如最近比较流行的,Google protobuf,还有MessagePack。

这里简单介绍下Google protobuf:

	protobuf是一个开源项目,而且是后台很硬的开源项目。网上现有的大部分(至少80%)开源项目,要么是某人单干、要么是几个闲杂人等合伙搞。而protobuf则不然,它是Google公司开发的,并且在Google内部久经考验的一个数据协议。
	
	那这个听起来牛X的东西到底有啥用处呢?简单地说,这个东西干的事儿其实和XML差不多,也就是把某种数据结构的信息,以某种格式保存起来。主要用于数据存储、传输协议格式等场合。

protobuf有什么特色呢?我们将这些数据协议内容放在网络层的章节里讲。

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

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

相关文章

Facebook Shop和Facebook Marketplace如何选择?

Facebook Shop和Facebook Marketplace都是可以让facebook用户售卖商品的平台,这两者有什么区别?在facebook上开网店要使用那一个平台更好?又要如何开通使用?这篇文章都会一一告诉你! 一、Facebook Shop Facebook shop主…

【项目实战】Protobuf入门介绍以及如何生成proto对象文件

一、 Protobuf 介绍 1.1 诞生背景 常用的数据格式是 JSON,XML,或者 YAML,这些都是文本格式,特点是容易被人识别,非常容易编程,缺点是数据量有点大。在某些特定场景下,比如帧同步、各个应用之间…

个人创业做什么比较好?需要具备哪些基本素质?

个人创业是一种创造、追求自由和独立的方式,也是许多人梦寐以求的事情。但是,很多人并不知道该做什么才能取得成功。在这篇文章中,我将探讨一些个人创业的建议,希望能够帮助你找到自己的方向。 1. 站在行业创新的前沿 在当前竞争…

Echarts数据可视化图表设计 学习笔记 python

📣 概况 Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyechar…

高端Zynq ultrascale+使用GTH回环测试 提供2套工程源码和技术支持

这目录1、前言2、GTH 高速收发器介绍GTH 高速收发器结构参考时钟的选择和分配GTH 发送端GTH 接收端3、vivado工程详解4、上板调试验证5、福利:工程代码的获取1、前言 Xilinx系列FPGA内置高速串行收发器,配有可配置的IP方便用户调用,按照速度…

QML ComboBox简介

1.简介 ComboBox是一个组合按钮和弹出列表。它提供了一种以占用最小屏幕空间的方式向用户显示选项列表的方法。 ComboBox用数据模型填充。数据模型通常是JavaScript数组、ListModel或整数,但也支持其他类型的数据模型。 常用属性: count : int&#x…

R语言基础(四):数据类型

R语言基础(一):注释、变量 R语言基础(二):常用函数 R语言基础(三):运算 5.数据类型 5.1 基本数据类型 R语言基本数据类型大致有六种: 整数Integer、浮点数Numeric、文本(字符串)Character、逻辑(布尔)Logical、复合类型Complex、…

基于Docker快速搭建蜜罐Dionaea(30)

实验目的 1. 快速搭建Dionaea蜜罐 2. 使用Nmap扫描测试Dionaea蜜罐预备知识1. 初步认识Dionaea dionaea,中文的意思即捕蝇草,是否形容蜜罐很形象?dionaea是nepenthes(猪笼草)的发展和后续,更加容易被部署和…

华大单片机、STM32单片机如何做printf串口打印格式化输出

第一种方法:使用标准C库,但使用标准C库你必须关闭半主机模式(1)添加下面代码就是关闭半主机模式/* 告知连接器不从C库链接使用半主机的函数 */ #pragma import(__use_no_semihosting)/* 定义 _sys_exit() 以避免使用半主机模式 */…

【项目日志】电商后台管理项目日志

技巧 对脚手架框架的梳理 使用脚手架建立项目后默认初始页面非空白,可以自行设置成空白页,将app.vue中的内容和样式清空即可router中的不必要的路由设置可以清除 如何右键打开powershell? 按住shift在空白处单击右键(win10和2…

一个故事看懂CPU的SIMD技术

好久不见,我叫阿Q,是CPU一号车间的员工。我所在的CPU有8个车间,也就是8个核心,咱们每个核心都可以同时执行两个线程,就是8核16线程,那速度杠杠滴。 我所在的一号车间,除了负责执行指令的我&…

蓝牙5.4出来了,实现单个接入点与数千个终端节点双向通讯

蓝牙技术联盟最近发布了蓝牙5.4的核心规范,蓝牙5.4规范的主要改进之一就是实现了单个接入点与数千个终端节点进行双向无连接通信, 这一特性主要是针对电子货架标签市场。蓝牙5.4有哪些改进和新功能?蓝牙技术联盟最近发布了蓝牙5.4的核心规范&…

保姆级使用PyTorch训练与评估自己的EVA网络教程

文章目录前言0. 环境搭建&快速开始1. 数据集制作1.1 标签文件制作1.2 数据集划分1.3 数据集信息文件制作2. 修改参数文件3. 训练4. 评估5. 其他教程前言 项目地址:https://github.com/Fafa-DL/Awesome-Backbones 操作教程:https://www.bilibili.co…

【大数据处理与可视化】二 、Numpy科学计算库

【大数据处理与可视化】一 、大数据分析环境搭建(安装 Anaconda 3 开发环境)实验目的实验内容实验步骤1、创建一个值域范围从10到49的向量。2、创建一个 3x3 并且值从0到8的矩阵。3、创建一个 3x3 的单位矩阵。4、创建一个数组,数组的shape为…

第十四届蓝桥杯三月真题刷题训练——第 7 天

目录 第 1 题:三角回文数 问题描述 答案提交 运行限制 代码: 第 2 题:数数 问题描述 答案提交 运行限制 代码: 第 3 题:倍数问题_同余定理_分情况讨论 题目描述 输入描述 输出描述 输入输出样例 运行限…

Azure Portal 访问安全性增强

Azure Portal 访问安全性增强客户需求如何设置账号(包括Admin)定期修改密码,例如强制每90天必须修改密码如何设定账号密码的复杂性要求如何设定限制访问Azure Portal的源IP Address客户需求 为了增强访问Azure Portal的安全性,希…

JavaWeb--ListenerAjaxaxiosjson

Listener&Ajax&axios1 Listener1.1 概述1.2 分类1.3 代码演示2 Ajax2.1 概述2.1.1 作用2.1.2 同步和异步2.2 快速入门2.2.1 服务端实现2.2.2 客户端实现2.2.3 测试2.3 案例2.3.1 分析2.3.2 后端实现2.3.3 前端实现2.4 测试3 axios3.1 基本使用3.2 快速入门3.2.1 后端实…

32*4VKL128 LQFP44超低功耗/超低工作电流/抗干扰LCD液晶段码驱动IC/LCD驱动芯片(IC) 适用于激光/红外线测距仪

产品型号:VKL128产品品牌:永嘉微电/VINKA封装形式:LQFP44产品年份:新年份原厂,工程服务,技术支持!VKL128概述:VKL128是一个点阵式存储映射的LCD驱动器,可支持最大128点(3…

BSN-DDC基础网络详解(五):接入DDC网络(1)

BSN-DDC基础网络推出已经一年了,得到了行业应用方和广大开发者的高度认可。一年中BSN产品技术团队也在根据市场业务需求不断更新功能服务,我们将通过本系列文章为大家系统化介绍DDC网络的功能和使用,为感兴趣的朋友提供学习帮助。01支持DDC的…

PACS系统源码 PACS源码 三维重建PACS源码

一、系统概述: ​基于VC MSSQL开发的一套三甲医院医学影像PACS系统源码,集成3D影像后处理功能,包括三维多平面重建、三维容积重建、三维表面重建、三维虚拟内窥镜、最大/小密度投影、心脏动脉钙化分析等功能。系统功能强大,代码…