游戏配置数据的调用方法及装置、存储介质、电子装置制造方法及图纸

技术编号:31798383 阅读:11 留言:0更新日期:2022-01-08 10:58
本发明专利技术提供了一种游戏配置数据的调用方法及装置、存储介质、电子装置,所述方法包括:读取若干个源表格文件的配置信息,其中,所述配置信息用于指示所述源表格文件的数据使用规则;针对每个源表格文件,基于所述配置信息将源表格文件中的游戏配置数据导出至数据库引擎的数据库文件中,其中,所述数据库文件存储在磁盘上;采用嵌入式脚本从所述数据库文件将所述游戏配置数据调用至内存。通过本发明专利技术,解决了相关技术从外部调用游戏配置数据内存占用高的技术问题,有效降低了运行时内存占用。用。用。

【技术实现步骤摘要】
游戏配置数据的调用方法及装置、存储介质、电子装置


[0001]本专利技术涉及计算机
,具体而言,涉及一种游戏配置数据的调用方法及装置、存储介质、电子装置。

技术介绍

[0002]相关技术中,游戏开发过程中存在着大量的配置数据,用于配置游戏内部数据属性,这些属性大多和游戏的玩法,数值相关。游戏运行过程中,通过配置文件,将配置数据加载进内存中加以使用。
[0003]相关技术的方案中,一般是将源文件导出为特定格式,在使用的时候将数据加载到内存中,然后转换成lua的table格式,在游戏业务中使用。因为配置数据需要根据数据所在的表的id来进行查找,所以在使用的时候需要将表中的所有数据全部加载到内存中。当表的规模较大时,需要占用大量内存,影响游戏的运行。
[0004]相关技术中,对此问题的解决方案包括两种常见思路:对数据表进行拆分,根据表名和表id的映射对数据进行查找。这种方案解决了部分内存问题,但是仍存在缺陷:拆分之后文件数过多,影响打包速度;对文件查找,受限于IO速度,时间性能不佳;对于部分数据类型,例如luatable,会存在读取数据后,数据无法被虚拟机自动垃圾回收的情况;无法对数据进行范围查找,或者精确定位到某行某列。将数据转换成一种内存分布紧密的二进制格式,在使用的时候将数据转换成需要的格式。这种方式解决了部分内存问题,但是也存在一些缺陷:占用内存比直接的luatable格式少,但是因为还是将整表数据加进了内存,所以没有从根本上解决问题,当项目规模到一定程度的时候还是会出现内存不足的问题;使用不方便,因为为了节约空间,每张表的反序列化的接口需要手动去写。
[0005]针对相关技术中存在的上述问题,目前尚未发现有效的解决方案。

技术实现思路

[0006]本专利技术实施例提供了一种游戏配置数据的调用方法及装置、存储介质、电子装置。
[0007]根据本专利技术的一个实施例,提供了一种游戏配置数据的调用方法,包括:读取若干个源表格文件的配置信息,其中,所述配置信息用于指示所述源表格文件的数据使用规则;针对每个源表格文件,基于所述配置信息将源表格文件中的游戏配置数据导出至数据库引擎的数据库文件中,其中,所述数据库文件存储在磁盘上;采用嵌入式脚本从所述数据库文件将所述游戏配置数据调用至内存。
[0008]可选的,基于所述配置信息将源表格文件中的游戏配置数据导出至数据库引擎的数据库文件中包括:对所述源表格文件中的游戏配置数据进行合法性校验;若所述源表格文件中的游戏配置数据合法,从所述源表格文件中导出所述游戏配置数据的元数据表,从所述源表格文件中导出所述游戏配置数据的数据表,从所述源表格文件中导出所述游戏配置数据的日志文件,从所述源表格文件中导出所述游戏配置数据的辅助文件,其中,所述辅助文件用于在代码编辑器中生成提示信息;将所述元数据表、所述数据表、所述日志文件、
所述辅助文件复制到与所述配置信息匹配的数据库文件中。
[0009]可选的,对所述源表格文件中的游戏配置数据进行合法性校验包括:将所述源表格文件转换为二维数组;从所述二维数组中读取所述源表格文件的表头段和数据段;采用所述表头段对所述数据段进行数据整合,得到中间数据;遍历所述中间数据,对所述中间数据执行以下校验步骤至少之一:校验所述中间数据的表头格式是否正确,校验所述中间数据是否存在空行,校验所述中间数据的键值是否重复,校验所述中间数据的数据格式是否正确,校验所述中间数据的表关联标识是否有效;若所述中间数据校验通过,确定所述源表格文件中的游戏配置数据合法。
[0010]可选的,从所述源表格文件中导出所述游戏配置数据的元数据表包括:从所述源表格文件中提取表名称和规则内容,其中,所述规则内容包括以下数据项:表所属数据库的数据库名称、表内每一列的数据格式、表的关联信息;采用key

value的格式存储所述规则内容,并将所述规则内容的多个数据项记录在多个table中,其中,key为表名称,value为规则内容,每个数据项对应一个table。
[0011]可选的,采用嵌入式脚本从所述数据库文件将所述游戏配置数据调用至内存包括:在嵌入式脚本中写入SQL语句,通过所述嵌入式脚本在游戏脚本中调用数据库引擎的接口返回指向数据的指针;基于所述指针逐行获取所述数据库文件中的游戏配置数据,并逐行将游戏配置数据拷贝到所述嵌入式脚本的虚拟机中,在所述虚拟机中将所述游戏配置数据转换成所述嵌入式脚本的表格式,其中,所述虚拟机运行在内存中。
[0012]可选的,基于所述指针逐行获取所述数据库文件中的游戏配置数据包括:对所述游戏脚本的数据库引擎进行编译,将所述数据库引擎的每个数据库文件映射为一个物理文件,其中,物理文件中包括若干个采用大小相同的Page进行存储的数据,多个Page之间的关系由B+树形结构进行存储,通过一颗B+树结构的指针index来进行索引;运行所述数据库引擎,将所述指针加载进内存,通过所述指针在磁盘中逐行索引所述游戏配置数据。
[0013]可选的,在通过所述指针在磁盘中逐行索引所述游戏配置数据之后,所述方法还包括:采用所述嵌入式脚本的加密函数接口将所述游戏配置数据导出至加密模块,其中,所述加密模块用于对每个page单独进行高级加密标准AES加密;采用所述加密函数接口将加密后的游戏配置数据导入至内存;采用所述嵌入式脚本的解密函数接口将密钥传入内存,并采用所述密钥对加密后的游戏配置数据进行解密。
[0014]可选的,在通过所述嵌入式脚本在游戏脚本中调用数据库引擎的接口返回指向数据的指针之前,所述方法还包括:将所述嵌入式脚本和所述数据库引擎编译成两个动态库,在所述数据库引擎的函数库中添加接口,其中,所述嵌入式脚本和所述数据库引擎使用同一个函数库;将所述接口注入到所述嵌入式脚本的虚拟机中。
[0015]可选的,在嵌入式脚本中写入SQL语句包括:采用所述嵌入式脚本的元表对SQL语句进行封装,传入表id,生成SQL语句;查询与所述元表匹配的SQL字符串,其中,每张元表的SQL语句预先缓存一个SQL字符串。
[0016]根据本专利技术的另一个实施例,提供了一种游戏配置数据的调用装置,包括:读取模块,用于读取若干个源表格文件的配置信息,其中,所述配置信息用于指示所述源表格文件的数据使用规则;导出模块,用于针对每个源表格文件,基于所述配置信息将源表格文件中的游戏配置数据导出至数据库引擎的数据库文件中,其中,所述数据库文件存储在磁盘上;
调用模块,用于采用嵌入式脚本从所述数据库文件将所述游戏配置数据调用至内存。
[0017]可选的,所述导出模块包括:校验单元,用于对所述源表格文件中的游戏配置数据进行合法性校验;导出单元,用于若所述源表格文件中的游戏配置数据合法,从所述源表格文件中导出所述游戏配置数据的元数据表,从所述源表格文件中导出所述游戏配置数据的数据表,从所述源表格文件中导出所述游戏配置数据的日志文件,从所述源表格文件中导出所述游戏配置数据的辅助文件,其中,所述辅助文件用于在代码编辑器中生本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种游戏配置数据的调用方法,其特征在于,包括:读取若干个源表格文件的配置信息,其中,所述配置信息用于指示所述源表格文件的数据使用规则;针对每个源表格文件,基于所述配置信息将源表格文件中的游戏配置数据导出至数据库引擎的数据库文件中,其中,所述数据库文件存储在磁盘上;采用嵌入式脚本从所述数据库文件将所述游戏配置数据调用至内存。2.根据权利要求1所述的方法,其特征在于,基于所述配置信息将源表格文件中的游戏配置数据导出至数据库引擎的数据库文件中包括:对所述源表格文件中的游戏配置数据进行合法性校验;若所述源表格文件中的游戏配置数据合法,从所述源表格文件中导出所述游戏配置数据的元数据表,从所述源表格文件中导出所述游戏配置数据的数据表,从所述源表格文件中导出所述游戏配置数据的日志文件,从所述源表格文件中导出所述游戏配置数据的辅助文件,其中,所述辅助文件用于在代码编辑器中生成提示信息;将所述元数据表、所述数据表、所述日志文件、所述辅助文件复制到与所述配置信息匹配的数据库文件中。3.根据权利要求2所述的方法,其特征在于,对所述源表格文件中的游戏配置数据进行合法性校验包括:将所述源表格文件转换为二维数组;从所述二维数组中读取所述源表格文件的表头段和数据段;采用所述表头段对所述数据段进行数据整合,得到中间数据;遍历所述中间数据,对所述中间数据执行以下校验步骤至少之一:校验所述中间数据的表头格式是否正确,校验所述中间数据是否存在空行,校验所述中间数据的键值是否重复,校验所述中间数据的数据格式是否正确,校验所述中间数据的表关联标识是否有效;若所述中间数据校验通过,确定所述源表格文件中的游戏配置数据合法。4.根据权利要求2所述的方法,其特征在于,从所述源表格文件中导出所述游戏配置数据的元数据表包括:从所述源表格文件中提取表名称和规则内容,其中,所述规则内容包括以下数据项:表所属数据库的数据库名称、表内每一列的数据格式、表的关联信息;采用key

value的格式存储所述规则内容,并将所述规则内容的多个数据项记录在多个table中,其中,key为表名称,value为规则内容,每个数据项对应一个table;将所述多个table记录在同一个元数据库中,得到元数据表。5.根据权利要求1所述的方法,其特征在于,采用嵌入式脚本从所述数据库文件将所述游戏配置数据调用至内存包括:在嵌入式脚本中写入SQL语句,通过所述嵌入式脚本在游戏脚本中调用数据库引擎的接口返回指向数据的指针;基于所述指针逐行获取所述数据库文件中的游戏配置数据,并逐行将游戏配置数据拷贝到所述...

【专利技术属性】
技术研发人员:张海伟周颢
申请(专利权)人:完美世界北京软件科技发展有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1