游戏数据的处理方法及装置、存储介质、计算机设备转让专利

申请号 : CN202010602378.4

文献号 : CN111714895B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 程小三韩永强

申请人 : 天津亚克互动科技有限公司

摘要 :

本申请公开了一种游戏数据的处理方法及装置、存储介质、计算机设备,该方法包括:获取游戏场景的资源数据,所述资源数据包括所述游戏场景内的游戏资源的资源水平位置数据以及与所述资源水平位置数据对应的资源上表面高度数据和资源下表面高度数据;基于所述资源数据,确定与所述游戏场景匹配的每个区域块上对应体素的体素信息,并生成所述游戏场景的体素文件,每个所述区域块上对应体素的体素信息为与所述区域块水平位置对应的所述资源水平位置数据以及所述资源上表面高度数据和所述资源下表面高度数据。本申请减少了体素文件的内存占用大小,提高了内存使用效率,并且在高度方向上可以采用高精度的浮点数表示,有助于提升资源表示精度。

权利要求 :

1.一种游戏数据的处理方法,其特征在于,包括:获取游戏场景的资源数据,其中,所述资源数据包括所述游戏场景内的游戏资源的资源水平位置数据以及与所述资源水平位置数据对应的资源上表面高度数据和资源下表面高度数据;

基于所述资源数据,确定与所述游戏场景匹配的每个区域块上对应体素的体素信息,将所述游戏资源按层划分生成所述游戏场景的体素文件,其中,每个所述区域块上对应体素的体素信息为与所述区域块水平位置对应的所述资源水平位置数据以及每层游戏资源的高度数据,所述每层游戏资源的高度数据包括对应游戏资源的所述资源上表面高度数据和所述资源下表面高度数据;

接收游戏场景导出指令;

获取所述游戏场景对应的封闭空间数据,其中,所述封闭空间数据包括封闭空间水平位置数据以及与所述封闭空间水平位置数据对应的封闭空间上表面高度数据和封闭空间下表面高度数据;按照所述封闭空间上表面高度数据和所述封闭空间下表面高度数据,对所述体素文件中与所述封闭空间水平位置处对应的所述资源上表面高度数据和所述资源下表面高度数据进行修改,以删除或标记所述体素文件中所述封闭空间上表面高度数据与所述封闭空间下表面高度数据之间的所述资源上表面高度数据和所述资源下表面高度数据,所述封闭空间为游戏角色和NPC无法进入的区域;

基于修改后的体素文件,导出游戏场景。

2.根据权利要求1所述的方法,其特征在于,每个所述区域块包括所述游戏场景中水平面上的一块区域,每块区域的形状和大小为所述游戏场景中任一体素的上表面或下表面的形状和大小。

3.根据权利要求2所述的方法,其特征在于,所述资源上表面高度数据和所述资源下表面高度数据包括至少一对,同一资源水平位置对应的任一资源上表面高度数据与任一资源下表面高度数据互不相同,任意一对所述资源上表面高度数据和所述资源下表面高度数据用于描述相应资源水平位置出的游戏资源上、下表面高度。

4.根据权利要求1所述的方法,其特征在于,所述基于修改后的体素文件,导出游戏场景,具体包括:

获取无效地形数据,其中,所述无效地形数据包括无效地形水平位置数据;

根据所述修改后的体素文件以及所述无效地形数据,导出所述游戏场景。

5.根据权利要求4所述的方法,其特征在于,所述根据所述修改后的体素文件以及所述无效地形数据,导出所述游戏场景,具体包括:基于所述资源水平位置数据以及所述无效地形水平位置数据,创建游戏场景的遮罩层,其中,所述遮罩层包括除所述无效地形水平位置数据外的所述资源水平位置数据;

根据所述遮罩层以及所述修改后的体素文件,导出所述游戏场景。

6.根据权利要求5所述的方法,其特征在于,所述无效地形为所述游戏场景不显示的区域。

7.根据权利要求1所述的方法,其特征在于,所述导出游戏场景之后,所述方法还包括:接收物品摆放请求,其中,所述物品摆放请求包括摆放前的物品体素信息以及摆放后的物品体素信息;

基于所述修改后的体素文件以及所述摆放后的物品体素信息,判断所述摆放后的物品体素信息与所述游戏资源对应的体素信息是否存在重合;

若不存在,则基于所述摆放前的物品体素信息以及所述摆放后的物品体素信息对所述游戏场景内的物品进行摆放并更新所述修改后的体素文件,以及基于所述摆放前的物品体素信息和所述摆放后的物品体素信息生成并发送物品摆放日志;

若存在,则拒绝所述物品摆放请求。

8.一种游戏数据的处理装置,其特征在于,包括:资源数据获取模块,用于获取游戏场景的资源数据,其中,所述资源数据包括所述游戏场景内的游戏资源的资源水平位置数据以及与所述资源水平位置数据对应的资源上表面高度数据和资源下表面高度数据;

体素文件生成模块,用于基于所述资源数据,确定与所述游戏场景匹配的每个区域块上对应体素的体素信息,将所述游戏资源按层划分生成所述游戏场景的体素文件,其中,每个所述区域块上对应体素的体素信息为与所述区域块水平位置对应的所述资源水平位置数据以及每层游戏资源的高度数据,所述每层游戏资源的高度数据包括对应游戏资源的所述资源上表面高度数据和所述资源下表面高度数据;

场景导出指令接收模块,用于接收游戏场景导出指令;

封闭空间数据获取模块,用于获取所述游戏场景对应的封闭空间数据,其中,所述封闭空间数据包括封闭空间水平位置数据以及与所述封闭空间水平位置数据对应的封闭空间上表面高度数据和封闭空间下表面高度数据,所述封闭空间为游戏角色和NPC无法进入的区域;

体素文件修改模块,用于按照所述封闭空间上表面高度数据和所述封闭空间下表面高度数据,对所述体素文件中与所述封闭空间水平位置处对应的所述资源上表面高度数据和所述资源下表面高度数据进行修改,以删除或标记所述体素文件中所述封闭空间上表面高度数据与所述封闭空间下表面高度数据之间的所述资源上表面高度数据和所述资源下表面高度数据;

场景导出模块,用于基于修改后的体素文件,导出游戏场景。

9.一种存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现权利要求1至7中任一项所述的游戏数据的处理方法。

10.一种计算机设备,包括存储介质、处理器及存储在存储介质上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至7中任一项所述的游戏数据的处理方法。

说明书 :

游戏数据的处理方法及装置、存储介质、计算机设备

技术领域

[0001] 本申请涉及数据处理技术领域,尤其是涉及到一种游戏数据的处理方法及装置、存储介质、计算机设备。

背景技术

[0002] 随着用户对游戏品质需求的提升,MMORPG(Massive Multiplayer Online Role‑Playing Game,大型多人在线角色扮演游戏)作为网络游戏中的一种重要游戏类型,也在潮
流中不断的进化着。目前,MMORPG已经基本进入3D(3Dimensions,三维)时代,3D游戏的玩法
不仅仅在地面,玩家可以在游戏中进行空中飞行、战斗等等。
[0003] 目前3D游戏通常有三种做法:一种是体素(Voxel),体素是3D空间的最小表示单位,类比于2D空间的像素;一种是多边形网格,该方式的缺点是查找效率较低,后台性能压
力大;一种是分层即多层网格,但该方式的缺点是地面以上很难划分层的界限,对于复杂建
筑,在建筑层数较多时,如果完整的表示,需要大量阻挡图,内存占用太大。
[0004] 对于体素而言,在目前现有相关技术中,体素也因占用存储空间过大,导致难以普及。如何优化体素占用的存储空间,是推广体素应用急需解决的重要问题之一。

发明内容

[0005] 有鉴于此,本申请提供了一种游戏数据的处理方法及装置、存储介质、计算机设备,减少了体素文件的内存占用大小,极大的提高了内存使用效率,并且在高度方向上可以
采用高精度的浮点数表示,有助于提升资源表示精度。
[0006] 根据本申请的一个方面,提供了一种游戏数据的处理方法,包括:
[0007] 获取游戏场景的资源数据,其中,所述资源数据包括所述游戏场景内的游戏资源的资源水平位置数据以及与所述资源水平位置数据对应的资源上表面高度数据和资源下
表面高度数据;
[0008] 基于所述资源数据,确定与所述游戏场景匹配的每个区域块上对应体素的体素信息,并生成所述游戏场景的体素文件,其中,每个所述区域块上对应体素的体素信息为与所
述区域块水平位置对应的所述资源水平位置数据以及所述资源上表面高度数据和所述资
源下表面高度数据。
[0009] 具体地,每个所述区域块包括所述游戏场景中水平面上的一块区域,每块区域的形状和大小为所述游戏场景中任一体素的上表面或下表面的形状和大小。
[0010] 具体地,所述资源上表面高度数据和所述资源下表面高度数据包括至少一对,同一资源水平位置对应的任一资源上表面高度数据与任一资源下表面高度数据互不相同,任
意一对所述资源上表面高度数据和所述资源下表面高度数据用于描述相应资源水平位置
出的游戏资源上、下表面高度。
[0011] 具体地,所述生成所述游戏场景的体素文件之后,所述方法还包括:
[0012] 获取所述游戏场景对应的封闭空间数据,其中,所述封闭空间数据包括封闭空间水平位置数据以及与所述封闭空间水平位置数据对应的封闭空间上表面高度数据和封闭
空间下表面高度数据;
[0013] 按照所述封闭空间上表面高度数据和所述封闭空间下表面高度数据,对所述体素文件中与所述封闭空间水平位置处对应的所述资源上表面高度数据和所述资源下表面高
度数据进行修改。
[0014] 具体地,所述获取所述游戏场景对应的封闭空间数据之前,所述方法还包括:
[0015] 接收游戏场景导出指令;
[0016] 所述对所述体素文件中与所述封闭空间水平位置处对应的所述资源上表面高度数据和所述资源下表面高度数据进行修改之后,所述方法还包括:
[0017] 基于修改后的体素文件,导出游戏场景。
[0018] 具体地,所述对所述体素文件中与所述封闭空间水平位置处对应的所述资源上表面高度数据和所述资源下表面高度数据进行修改,具体包括:
[0019] 删除所述体素文件中所述封闭空间上表面高度数据与所述封闭空间下表面高度数据之间的所述资源上表面高度数据和所述资源下表面高度数据。
[0020] 具体地,所述基于修改后的体素文件,导出游戏场景,具体包括:
[0021] 获取无效地形数据,其中,所述无效地形数据包括无效地形水平位置数据;
[0022] 根据所述修改后的体素文件以及所述无效地形数据,导出所述游戏场景。
[0023] 具体地,所述根据所述修改后的体素文件以及所述无效地形数据,导出所述游戏场景,具体包括:
[0024] 基于所述资源水平位置数据以及所述无效地形水平位置数据,创建游戏场景的遮罩层,其中,所述遮罩层包括除所述无效地形水平位置数据外的所述资源水平位置数据;
[0025] 根据所述遮罩层以及所述修改后的体素文件,导出所述游戏场景。
[0026] 具体地,所述封闭空间为游戏角色和NPC无法进入的区域,所述无效地形为所述游戏场景不显示的区域。
[0027] 具体地,所述导出游戏场景之后,所述方法还包括:
[0028] 接收物品摆放请求,其中,所述物品摆放请求包括摆放前的物品体素信息以及摆放后的物品体素信息;
[0029] 基于所述修改后的体素文件以及所述摆放后的物品体素信息,判断所述摆放后的物品体素信息与所述游戏资源对应的体素信息是否存在重合;
[0030] 若不存在,则基于所述摆放前的物品体素信息以及所述摆放后的物品体素信息对所述游戏场景内的物品进行摆放并更新所述修改后的体素文件,以及基于所述摆放前的物
品体素信息和所述摆放后的物品体素信息生成并发送物品摆放日志;
[0031] 若存在,则拒绝所述物品摆放请求。
[0032] 根据本申请的另一方面,提供了一种游戏数据的处理装置,包括:
[0033] 资源数据获取模块,用于获取游戏场景的资源数据,其中,所述资源数据包括所述游戏场景内的游戏资源的资源水平位置数据以及与所述资源水平位置数据对应的资源上
表面高度数据和资源下表面高度数据;
[0034] 体素文件生成模块,用于基于所述资源数据,确定与所述游戏场景匹配的每个区域块上对应体素的体素信息,并生成所述游戏场景的体素文件,其中,每个所述区域块上对
应体素的体素信息为与所述区域块水平位置对应的所述资源水平位置数据以及所述资源
上表面高度数据和所述资源下表面高度数据。
[0035] 具体地,每个所述区域块包括所述游戏场景中水平面上的一块区域,每块区域的形状和大小为所述游戏场景中任一体素的上表面或下表面的形状和大小。
[0036] 具体地,所述资源上表面高度数据和所述资源下表面高度数据包括至少一对,同一资源水平位置对应的任一资源上表面高度数据与任一资源下表面高度数据互不相同,任
意一对所述资源上表面高度数据和所述资源下表面高度数据用于描述相应资源水平位置
出的游戏资源上、下表面高度。
[0037] 具体地,所述装置还包括:
[0038] 封闭空间数据获取模块,用于所述生成所述游戏场景的体素文件之后,获取所述游戏场景对应的封闭空间数据,其中,所述封闭空间数据包括封闭空间水平位置数据以及
与所述封闭空间水平位置数据对应的封闭空间上表面高度数据和封闭空间下表面高度数
据;
[0039] 体素文件修改模块,用于按照所述封闭空间上表面高度数据和所述封闭空间下表面高度数据,对所述体素文件中与所述封闭空间水平位置处对应的所述资源上表面高度数
据和所述资源下表面高度数据进行修改。
[0040] 具体地,所述装置还包括:
[0041] 场景导出指令接收模块,用于所述获取所述游戏场景对应的封闭空间数据之前,接收游戏场景导出指令;
[0042] 场景导出模块,用于所述对所述体素文件中与所述封闭空间水平位置处对应的所述资源上表面高度数据和所述资源下表面高度数据进行修改之后,基于修改后的体素文
件,导出游戏场景。
[0043] 具体地,所述体素文件修改模块,具体用于:
[0044] 删除所述体素文件中所述封闭空间上表面高度数据与所述封闭空间下表面高度数据之间的所述资源上表面高度数据和所述资源下表面高度数据。
[0045] 具体地,所述场景导出模块,具体包括:
[0046] 无效地形数据获取单元,用于获取无效地形数据,其中,所述无效地形数据包括无效地形水平位置数据;
[0047] 场景导出单元,用于根据所述修改后的体素文件以及所述无效地形数据,导出所述游戏场景。
[0048] 具体地,所述场景导出单元,具体包括:
[0049] 遮罩层创建子单元,用于基于所述资源水平位置数据以及所述无效地形水平位置数据,创建游戏场景的遮罩层,其中,所述遮罩层包括除所述无效地形水平位置数据外的所
述资源水平位置数据;
[0050] 场景导出子单元,用于根据所述遮罩层以及所述修改后的体素文件,导出所述游戏场景。
[0051] 具体地,所述封闭空间为游戏角色和NPC无法进入的区域,所述无效地形为所述游戏场景不显示的区域。
[0052] 具体地,所述装置还包括:
[0053] 摆放请求接收模块,用于所述导出游戏场景之后,接收物品摆放请求,其中,所述物品摆放请求包括摆放前的物品体素信息以及摆放后的物品体素信息;
[0054] 摆放请求判断模块,用于基于所述修改后的体素文件以及所述物品体素信息,判断若按照所述物品摆放请求对物品进行摆放后所述物品与所述游戏资源对应的体素信息
是否存在重合;
[0055] 物品摆放模块,用于若不存在,则基于所述摆放前的物品体素信息以及所述摆放后的物品体素信息对所述游戏场景内的物品进行摆放并更新所述修改后的体素文件,以及
基于所述摆放前的物品体素信息和所述摆放后的物品体素信息生成并发送物品摆放日志;
[0056] 摆放请求拒绝模块,用于若存在,则拒绝所述物品摆放请求。
[0057] 依据本申请又一个方面,提供了一种存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述游戏数据的处理方法。
[0058] 依据本申请再一个方面,提供了一种计算机设备,包括存储介质、处理器及存储在存储介质上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述游戏
数据的处理方法。
[0059] 借由上述技术方案,本申请提供的一种游戏数据的处理方法及装置、存储介质、计算机设备,游戏场景的资源数据通过资源水平位置数据以及与资源水平位置数据对应的资
源高度数据来表示,资源高度数据具体包括资源上表面高度和资源下表面高度,从而利用
资源数据确定游戏场景中每个区域块对应的体素信息,生成体素文件。本申请相对于现有
技术中在高度方向上按体素单位大小进行空间划分的方式来说,通过按游戏资源高度数据
对每个区域块对应的高度数据进行分层划分,一层游戏资源对应于一对高度数据,即上表
面高度数据和下表面高度数据,这种稀疏化的体素文件表示方式大大减少了体素文件的内
存占用大小,极大的提高了内存使用效率,并且在高度方向上可以采用高精度的浮点数表
示,这样的高度描述方式,在后续导出游戏场景时,可以使游戏资源在高度方向上更加平
滑,从而提升地形表示的精度。
[0060] 上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够
更明显易懂,以下特举本申请的具体实施方式。

附图说明

[0061] 此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0062] 图1示出了本申请实施例提供的一种游戏数据的处理方法的流程示意图;
[0063] 图2示出了本申请实施例提供的另一种游戏数据的处理方法的流程示意图;
[0064] 图3示出了本申请实施例提供的又一种游戏数据的处理方法的流程示意图;
[0065] 图4示出了本申请实施例提供的一种游戏场景示意图;
[0066] 图5示出了本申请实施例提供的一种游戏数据的处理装置的结构示意图;
[0067] 图6示出了本申请实施例提供的另一种游戏数据的处理装置的结构示意图。

具体实施方式

[0068] 下文中将参考附图并结合实施例来详细说明本申请。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0069] 在本实施例中提供了一种游戏数据的处理方法,如图1所示,该方法包括:
[0070] 步骤101,获取游戏场景的资源数据,其中,资源数据包括游戏场景内的游戏资源的资源水平位置数据以及与资源水平位置数据对应的资源上表面高度数据和资源下表面
高度数据;
[0071] 步骤102,基于资源数据,确定与游戏场景匹配的每个区域块上对应体素的体素信息,并生成游戏场景的体素文件,其中,每个区域块上对应体素的体素信息为与区域块水平
位置对应的资源水平位置数据以及资源上表面高度数据和资源下表面高度数据。
[0072] 本申请实施例可以应用于游戏场景中,利用体素文件来存储、描述游戏场景中的各种地形资源数据(地形资源数据可以包括室外地形,例如草地、山峰、河流等等,也可以包
括室内地形,例如房屋、城墙等等)。体素是3D空间的最小表示单位,体素的概念是二维空间
的最小单位像素衍生而来的,像素用于描述二维的影像,而体素则可以用于描述三维空间
上的立体的对象,是三维空间分割上的最小单位,在游戏中可用于行走、飞行、摄像机等碰
撞检测,但在现有技术中,体素因内存过大而难以普及。针对现有技术中所存在的问题,本
申请实施例提供的上述方案,有助于优化体素文件的内存空间占用,该方案适用于前端(客
户端)和后台(服务器)。
[0073] 如图1所示的方法中,在实施本方法之前,应先针对该游戏场景,对该游戏场景下的体素进行定义,体素用于表示该游戏场景中的基本构成单元,游戏场景由至少一个体素
构成。体素的具体生成方式可以采用现有技术实现,在一可选方式中,可以基于开源项目
Recast实现,该项目由Mesh(网格)经过体素化、地区生成、轮廓生成、多边形网格生成、高度
细节生成等步骤生成NavMesh,将Recast对Mesh体素化的代码抽出来即可生成体素。本申请
实施例中,每个体素为一个长方体,游戏场景中的游戏资源模型完全由长方体拼成,每个体
素的体素信息包括对应的长方体的上表面高度和下表面高度。在实际应用中,长方体表面
(上表面和下表面)的面积大小可以根据实际需求配置,在一可选方式中,长方体表面的长
度和宽度可以相等,也就是,上下表面的形状为正方形,例如,上下表面的长度和宽度可以
为0.5m(米)。
[0074] 在上述步骤101中,获取游戏场景中的游戏资源数据,游戏资源数据具体可以包括游戏场景中可以阻挡玩家移动的资源数据,例如石砖铺砌的地面、草地、房屋、城墙等等地
形资源,比如玩家不可以穿墙、不可以穿越地面进入地下。在实际应用中,游戏场景中的树
叶等不会阻挡玩家移动的资源不用于生成体素文件。游戏资源数据具体可以包含游戏资源
的资源水平位置数据以及与该资源水平位置数据相对应的资源高度数据,为了减少体素文
件数据量,资源高度数据通常通过资源上表面高度数据和资源下表面高度数据来描述,上
表面高度和下表面高度之间的资源在实际游戏场景中一般会被填充,不需要直接显示出
来。例如,一片由石砖铺砌的地面,该地面铺满A区域,那么地面资源对应的资源水平位置数
据应包含A区域对应的水平位置,相应水平位置对应的资源下表面高度数据为石砖的下表
面高度(例如为0),资源上表面高度数据为石砖的上表面高度(例如石砖厚度为20cm,那么
上表面高度为20cm)。再例如,用于支撑房屋的柱子,该柱子竖直立在B区域,柱子对应的资
源水平位置数据应包含B区域对应的水平位置,相应水平位置对应的资源上、下表面高度数
据为该柱子的上、下表面的高度。通过上述方式可以描述出游戏场景内每个游戏资源在三
维空间中的位置,从而可以利用这些位置信息生成游戏场景对应的体素文件。
[0075] 具体地,资源上表面高度数据和资源下表面高度数据包括至少一对,同一资源水平位置对应的任一资源上表面高度数据与任一资源下表面高度数据互不相同,任意一对资
源上表面高度数据和资源下表面高度数据用于描述相应资源水平位置出的游戏资源上、下
表面高度。游戏资源应有一定的厚度,即任意一对游戏资源对应的上、下表面高度数据不
同,并且游戏资源应该互不重叠,即同一水平位置上对应的任意一个资源上表面高度数据
与任意一个资源下表面高度数据互不相同。
[0076] 在上述步骤102中,针对于预先对游戏场景划分的体素,结合上述游戏资源数据,可以生成该游戏场景对应的体素文件,具体地,将游戏场景中的水平面按照体素形状、大小
进行区域划分,在本申请实施例中,每个区域块包括游戏场景中水平面上的一块区域,每块
区域的形状和大小为游戏场景中任一体素的上表面或下表面的形状和大小。例如,游戏场
景对应的三维空间的长、宽、高分别是L、W、H,每个体素为1*1*1正方体,在平面上按照每个
区域1*1的方式将平面空间划分成L*W个区域,按照现有技术中提供的方法,比如H为256的
空间对应的区域划分方式是在每个平面单元区域上进行256个划分,每个平面单元区域对
应256个数据。而本申请实施例中,在高度上不采用按单位格子划分的方式,而是将游戏资
源按层划分。比如对于室外的草地或者山峰,它们虽然凹凸不平,但实际上只是一层的地
形,只需要用地形的下表面和上表面的高度值表示,也就是一个平面单元区域,高度上只需
要2个浮点数就能表示(下表面高度和上表面高度)。再比如稍微复杂些的地形,如:室内场
景,有地板和屋顶,高度上也只有2层,每个平面单元区域用4个浮点数就可以表示(地板下
表面高度、地板上表面高度、屋顶下表面高度和屋顶上表面高度)。例如,某个平面区域对应
有地板资源和屋顶资源,该区域对应的地板资源下表面高度数据为0,上表面高度数据为
0.2m,屋顶资源下表面高度数据为5m,上表面高度数据为5.5米,则表示该区域上方0~0.2m
高度内有实物,5m~5.5m高度内有实物。
[0077] 在实际应用中,对于一般的场景,大部分地方的地形都是一层的空间,因此稀疏化表示方式可以极大的提高了内存使用效率,而且在高度方向上可以使用更高精度的浮点数
表示(不局限于以体素为单位,现有技术中对于高度的描述需要基于某个区域上对应的体
素空间格子,游戏资源只有包含某个格子或者不包含某个格子两种情况,不能包含某个体
素格子的一部分,而采用浮点数表示则不局限于该描述方式,也可以包含某个体素格子的
一部分),这样的高度描述方式,在后续导出游戏场景时,可以使游戏资源在高度方向上更
加平滑,从而提升地形表示的精度。稀疏化表示使基于体素的三维空间可以应用于对内存
要求严格的手游,为该解决方案提供了技术的理论基础。
[0078] 通过应用本实施例的技术方案,游戏场景的资源数据通过资源水平位置数据以及与资源水平位置数据对应的资源高度数据来表示,资源高度数据具体包括资源上表面高度
和资源下表面高度,从而利用资源数据确定游戏场景中每个区域块对应的体素信息,生成
体素文件。本申请实施例相对于现有技术中在高度方向上按体素单位大小进行空间划分的
方式来说,通过按游戏资源高度数据对每个区域块对应的高度数据进行分层划分,一层游
戏资源对应于一对高度数据,即上表面高度数据和下表面高度数据,这种稀疏化的体素文
件表示方式大大减少了体素文件的内存占用大小,极大的提高了内存使用效率,并且在高
度方向上可以采用高精度的浮点数表示,有助于提升资源表示精度。
[0079] 进一步的,作为上述实施例具体实施方式的细化和扩展,为了完整说明本实施例的具体实施过程,提供了另一种游戏数据的处理方法,如图2所示,该方法包括:
[0080] 步骤201,获取游戏场景的资源数据,其中,资源数据包括游戏场景内的游戏资源的资源水平位置数据以及与资源水平位置数据对应的资源上表面高度数据和资源下表面
高度数据。
[0081] 步骤202,基于资源数据,确定与游戏场景匹配的每个区域块上对应体素的体素信息,并生成游戏场景的体素文件,其中,每个区域块上对应体素的体素信息为与区域块水平
位置对应的资源水平位置数据以及资源上表面高度数据和资源下表面高度数据。
[0082] 步骤203,获取游戏场景对应的封闭空间数据,其中,封闭空间数据包括封闭空间水平位置数据以及与封闭空间水平位置数据对应的封闭空间上表面高度数据和封闭空间
下表面高度数据。
[0083] 步骤204,按照封闭空间上表面高度数据和封闭空间下表面高度数据,对体素文件中与封闭空间水平位置处对应的资源上表面高度数据和资源下表面高度数据进行修改。
[0084] 在本申请实施例中,游戏场景的体素文件用于描述游戏场景中的资源,基于体素文件可以对游戏场景进行导出,使游戏场景得以展示,在一些游戏场景中,存在一些封闭空
间,这些空间在游戏中不允许玩家角色或者NPC角色进入,例如一座门窗紧闭的房间。若按
照资源数据生成体素文件,与该房间水平位置对应的高度数据应包含至少两层,例如一层
地板高度数据和一层屋顶高度数据,然而在实际游戏场景中,由于这件房间是玩家无法进
入的,房间内部的资源不会向玩家展现,因此可以忽略该房间内部的资源。
[0085] 在上述实施例上,获取游戏场景对应的封闭空间数据,与资源数据相似的,封闭空间数据包括封闭空间水平位置数据以及与封闭空间水平位置数据对应的封闭空间高度数
据,封闭空间高度数据具体包括封闭空间上、下表面高度,基于封闭空间数据对体素文件进
行修改。
[0086] 在本申请的一个可选实施例中,具体地,删除体素文件中封闭空间上表面高度数据与封闭空间下表面高度数据之间的资源上表面高度数据和资源下表面高度数据。例如对
于包含地板资源和屋顶资源的房屋,该房屋区域对应的地板资源下表面高度数据为0,上表
面高度数据为0.2m,屋顶资源下表面高度数据为5m,上表面高度数据为5.5米,该房间为封
闭空间,即封闭空间的高度数据为下表面高度0m,上表面高度5.5m,则将体素文件中与封闭
空间的水平位置对应的资源高度数据中0~5.5m之间的数据删除(即删除地板资源上表面
高度数据0.2m和屋顶资源下表面高度数据5m),将封闭空间看做0~5.5m的一层资源,即封
闭空间的下表面高度为0,上表面高度为5.5m,这样封闭空间相应的高度数据的数据量从原
来的4个浮点数修改为2个浮点数,进一步减少了体素文件的数据量,并且,在基于该体素文
件导出游戏场景资源时,该封闭空间直接填实即可,不需要对封闭空间内的详细资源进行
导出,在不影响玩家游戏体验的前提下,提升了导出速度。
[0087] 另外,在另一种可选实施例中,还可以对封闭空间上表面高度和下表面高度之间的资源高度数据做出标记,从而在导出游戏场景时,可以跳过存在标记的高度数据,直接将
封闭空间作为一层资源导出,在保留完整体素文件的前提下,提升导出速度。
[0088] 本申请实施例还提供了另一种游戏数据的处理方法,如图3所示,该方法包括:
[0089] 步骤301,获取游戏场景的资源数据,其中,资源数据包括游戏场景内的游戏资源的资源水平位置数据以及与资源水平位置数据对应的资源上表面高度数据和资源下表面
高度数据;
[0090] 步骤302,基于资源数据,确定与游戏场景匹配的体素文件中每个区域块上对应体素的体素信息,并生成游戏场景的体素文件,其中,每个区域块上对应体素的体素信息为与
区域块水平位置对应的资源水平位置数据以及资源上表面高度数据和资源下表面高度数
据。
[0091] 步骤303,接收游戏场景导出指令;
[0092] 步骤304,获取游戏场景对应的封闭空间数据,其中,封闭空间数据包括封闭空间水平位置数据以及与封闭空间水平位置数据对应的封闭空间上表面高度数据和封闭空间
下表面高度数据;
[0093] 步骤305,按照封闭空间上表面高度数据和封闭空间下表面高度数据,对体素文件中与封闭空间水平位置处对应的资源上表面高度数据和资源下表面高度数据进行修改。
[0094] 步骤306,基于修改后的体素文件,导出游戏场景。
[0095] 如图3所示的实施例,与图2所示的实施例不同的是,基于封闭空间数据对体素文件进行修改的步骤由游戏场景导出指令触发,在接收到游戏场景导出指令后,才执行对体
素文件进行修改的步骤,不需要导出游戏场景时,体素文件按照原始文件进行保存。而图2
的实施例是对修改后的体素文件进行保存。从游戏场景导出速度来看,直接利用修改后的
体素文件进行导出的方式,导出速度更快。
[0096] 但是,由于随着游戏的版本更新,游戏场景中可能会逐步开放一些封闭空间,或者封闭一些开放空间,例如在最初设计的游戏场景中包含多个房间ABCDEF……在游戏的不同
版本中房间的开放和关闭情况不同,假设房间A在游戏1.0版本中属于封闭空间玩家无法进
入,在游戏2.0版本中在房间A中设置了NPC角色,玩家可以进入房间A与NPC对话领取任务。
对于这种情况,若按照图2的方式基于游戏1.0版本的封闭空间数据对体素文件进行修改,
在游戏更新到2.0版本时,原来的封闭空间变为了开放空间,这时需要导出新的游戏场景时
就需要在1.0版本的体素文件基础上对相应的资源进行修改,即将房间A从原来的封闭空间
修改为开放空间,将房间A从一层资源修改为多层资源,然后再在房间A中添加NPC资源。而
最初设计的游戏场景中房间A可能本身就包含多层资源,若可以基于原始的体素文件导出
游戏场景,只需要在房间A中添加NPC资源即可,修改内容更少,速度更快。因此在本实施例
中,对原始体素文件进行保存,并在接收到游戏场景导出指令以后,利用原始体素文件以及
封闭空间数据进行场景导出,方便对各个版本的游戏场景的导出。
[0097] 在一些场景中,步骤306,具体还包括:
[0098] 步骤306‑1,获取无效地形数据,其中,无效地形数据包括无效地形水平位置数据;
[0099] 步骤306‑2,根据修改后的体素文件以及无效地形数据,导出游戏场景。
[0100] 在该实施例中,在一些游戏场景中,可能会存在一些暂时不允许玩家进入并且也不希望被玩家看到的区域,例如地图边缘的空旷区域,暂时还未设计游戏内容,在导出游戏
场景时,基于无效地形数据以及体素文件进行场景导出,以使展示的游戏场景中不包含无
效地形区域,减少游戏运行中的内存占用。例如将体素文件中该无效地形水平位置数据对
应的资源数据进行删除,加快场景导出速度。
[0101] 另外,在一些可选实施例中,步骤306‑1具体可以包括:
[0102] 步骤306‑1‑1,基于资源水平位置数据以及无效地形水平位置数据,创建游戏场景的遮罩层,其中,遮罩层包括除无效地形水平位置数据外的资源水平位置数据;
[0103] 步骤306‑1‑2,根据遮罩层以及修改后的体素文件,导出游戏场景。
[0104] 在该实施例中,基于体素文件中的资源水平位置数据以及无效地形的水平位置数据创建一个遮罩层,遮罩层覆盖的区域为有效地形区域,不在遮罩层下面的地形属于无效
地形,导出时只显示遮罩层下的区域。图4示出了本申请实施例提供的一种游戏场景示意
图,该游戏场景示意图基于上述方法得到的体素文件导出,基于如图4所示的游戏场景示意
图,进行后续的渲染,就可以得到最终呈现在玩家面前的游戏场景。
[0105] 步骤307,接收物品摆放请求,其中,物品摆放请求包括摆放前的物品体素信息以及摆放后的物品体素信息;
[0106] 步骤308,基于修改后的体素文件以及摆放后的物品体素信息,判断摆放后的物品体素信息与游戏资源对应的体素信息是否存在重合;
[0107] 步骤309,若不存在,则基于摆放前的物品体素信息以及摆放后的物品体素信息对游戏场景内的物品进行摆放并更新修改后的体素文件,以及基于摆放前的物品体素信息和
摆放后的物品体素信息生成并发送物品摆放日志;
[0108] 步骤310,若存在,则拒绝物品摆放请求。
[0109] 在步骤307至步骤310中,导出游戏场景之后,玩家在游戏场景中体验时,玩家可以实现移动游戏场景内的一些游戏资源的动作,例如,移动游戏场景中某个房间的家具,比如
可以将床摆放到房间中,同时将一个桌子摆放到床上,然后再将一个凳子摆放到桌子上。玩
家可以对游戏场景内的物品先进行模拟摆放,基于玩家对物品的模拟摆放生成物品摆放请
求,该请求中具体应包括物品模拟摆放前的位置信息即摆放前的物品体素信息以及物品模
拟摆放后的位置信息即摆放后的物品体素信息,为了避免摆放的物品对游戏场景内的其他
游戏资源造成碰撞,应先检查摆放后的物品体素信息与游戏场景对应的体素信息是否发生
冲突,即摆放后的物品对应的每一个体素是否被游戏场景内的其他游戏资源占用,若未被
其他游戏资源占用,则说明物品可以摆放到模拟摆放的位置上,进一步,可以对物品实现在
游戏场景内的摆放,由于物品的摆放会对游戏空间内相应位置造成阻挡,在对物品进行摆
放的同时还应对游戏场景的体素文件进行更新,移除摆放前的物品体素信息并增加摆放后
的物品体素信息,另外,在网络游戏中玩家移动游戏内物品也会对其他玩家的游戏场景造
成影响,因此还应将物品摆放产生的相应数据上传到游戏服务器中,由服务器向其他玩家
的终端转发这些数据,从而实现其他玩家的客户端中对物品摆放数据的同步,完成服务器
端体素文件以及其他玩家终端体素文件的更新,以免其他玩家终端侧的游戏场景数据不一
致导致的游戏内错误。而若摆放后的物品对应的任意一个体素都被其他游戏资源占用,则
说明物品不可用摆放到模拟摆放的位置上,物品摆失败,拒绝该物品摆放请求。
[0110] 进一步的,作为图1方法的具体实现,本申请实施例提供了一种游戏数据的处理装置,如图5所示,该装置包括:
[0111] 资源数据获取模块41,用于获取游戏场景的资源数据,其中,资源数据包括游戏场景内的游戏资源的资源水平位置数据以及与资源水平位置数据对应的资源上表面高度数
据和资源下表面高度数据;
[0112] 体素文件生成模块42,用于基于资源数据,确定与游戏场景匹配的每个区域块上对应体素的体素信息,并生成游戏场景的体素文件,其中,每个区域块上对应体素的体素信
息为与区域块水平位置对应的资源水平位置数据以及资源上表面高度数据和资源下表面
高度数据。
[0113] 在一些应用场景中,具体地,每个区域块包括游戏场景中水平面上的一块区域,每块区域的形状和大小为游戏场景中任一体素的上表面或下表面的形状和大小。
[0114] 在一些应用场景中,具体地,资源上表面高度数据和资源下表面高度数据包括至少一对,同一资源水平位置对应的任一资源上表面高度数据与任一资源下表面高度数据互
不相同,任意一对资源上表面高度数据和资源下表面高度数据用于描述相应资源水平位置
出的游戏资源上、下表面高度。
[0115] 在一些应用场景中,如图6所示,具体地,该装置还包括:
[0116] 封闭空间数据获取模块43,用于生成游戏场景的体素文件之后,获取游戏场景对应的封闭空间数据,其中,封闭空间数据包括封闭空间水平位置数据以及与封闭空间水平
位置数据对应的封闭空间上表面高度数据和封闭空间下表面高度数据;
[0117] 体素文件修改模块44,用于按照封闭空间上表面高度数据和封闭空间下表面高度数据,对体素文件中与封闭空间水平位置处对应的资源上表面高度数据和资源下表面高度
数据进行修改。
[0118] 在一些应用场景中,如图6所示,具体地,该装置还包括:
[0119] 场景导出指令接收模块45,用于获取游戏场景对应的封闭空间数据之前,接收游戏场景导出指令;
[0120] 场景导出模块46,用于对体素文件中与封闭空间水平位置处对应的资源上表面高度数据和资源下表面高度数据进行修改之后,基于修改后的体素文件,导出游戏场景。
[0121] 在一些应用场景中,具体地,体素文件修改模块44,具体用于删除体素文件中封闭空间上表面高度数据与封闭空间下表面高度数据之间的资源上表面高度数据和资源下表
面高度数据。
[0122] 在一些应用场景中,如图6所示,具体地,场景导出模块46,具体包括:
[0123] 无效地形数据获取单元461,用于获取无效地形数据,其中,无效地形数据包括无效地形水平位置数据;
[0124] 场景导出单元462,用于根据修改后的体素文件以及无效地形数据,导出游戏场景。
[0125] 在一些应用场景中,具体地,图中未示出,场景导出单元462,具体包括:
[0126] 遮罩层创建子单元4621,用于基于资源水平位置数据以及无效地形水平位置数据,创建游戏场景的遮罩层,其中,遮罩层包括除无效地形水平位置数据外的资源水平位置
数据;
[0127] 场景导出子单元4622,用于根据遮罩层以及修改后的体素文件,导出游戏场景。
[0128] 在一些应用场景中,具体地,封闭空间为游戏角色和NPC无法进入的区域,无效地形为游戏场景不显示的区域。
[0129] 在一些应用场景中,如图6所示,具体地,该装置还包括:
[0130] 摆放请求接收模块47,用于导出游戏场景之后,接收物品摆放请求,其中,物品摆放请求包括摆放前的物品体素信息以及摆放后的物品体素信息;
[0131] 摆放请求判断模块48,用于基于修改后的体素文件以及物品体素信息,判断若按照物品摆放请求对物品进行摆放后物品与游戏资源对应的体素信息是否存在重合;
[0132] 物品摆放模块49,用于若不存在,则基于摆放前的物品体素信息以及摆放后的物品体素信息对游戏场景内的物品进行摆放并更新修改后的体素文件,以及基于摆放前的物
品体素信息和摆放后的物品体素信息生成并发送物品摆放日志;
[0133] 摆放请求拒绝模块50,用于若存在,则拒绝物品摆放请求。
[0134] 需要说明的是,本申请实施例提供的一种游戏数据的处理装置所涉及各功能单元的其他相应描述,可以参考图1和图2中的对应描述,在此不再赘述。
[0135] 基于上述如图1至图3所示方法,相应的,本申请实施例还提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述如图1至图3所示的游戏数据的处理
方法。
[0136] 基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD‑ROM,U盘,移动硬盘等)中,包括若干指令
用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个
实施场景所述的方法。
[0137] 基于上述如图1至图3所示的方法,以及图5、图6所示的虚拟装置实施例,为了实现上述目的,本申请实施例还提供了一种计算机设备,具体可以为个人计算机、服务器、网络
设备等,该计算机设备包括存储介质和处理器;存储介质,用于存储计算机程序;处理器,用
于执行计算机程序以实现上述如图1至图3所示的游戏数据的处理方法。
[0138] 可选地,该计算机设备还可以包括用户接口、网络接口、摄像头、射频(Radio Frequency,RF)电路,传感器、音频电路、WI‑FI模块等等。用户接口可以包括显示屏
(Display)、输入单元比如键盘(Keyboard)等,可选用户接口还可以包括USB接口、读卡器接
口等。网络接口可选的可以包括标准的有线接口、无线接口(如蓝牙接口、WI‑FI接口)等。
[0139] 本领域技术人员可以理解,本实施例提供的一种计算机设备结构并不构成对该计算机设备的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0140] 存储介质中还可以包括操作系统、网络通信模块。操作系统是管理和保存计算机设备硬件和软件资源的程序,支持信息处理程序以及其它软件和/或程序的运行。网络通信
模块用于实现存储介质内部各组件之间的通信,以及与该实体设备中其它硬件和软件之间
通信。
[0141] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以借助软件加必要的通用硬件平台的方式来实现,也可以通过硬件实现游戏场景的资源数据通
过资源水平位置数据以及与资源水平位置数据对应的资源高度数据来表示,资源高度数据
具体包括资源上表面高度和资源下表面高度,从而利用资源数据确定游戏场景中每个区域
块对应的体素信息,生成体素文件。本申请实施例相对于现有技术中在高度方向上按体素
单位大小进行空间划分的方式来说,通过按游戏资源高度数据对每个区域块对应的高度数
据进行分层划分,一层游戏资源对应于一对高度数据,即上表面高度数据和下表面高度数
据,这种稀疏化的体素文件表示方式大大减少了体素文件的内存占用大小,极大的提高了
内存使用效率,并且在高度方向上可以采用高精度的浮点数表示,有助于提升资源表示精
度。
[0142] 本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本申请所必须的。本领域技术人员可以理解实施场景中的装置中的模
块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于
本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一
步拆分成多个子模块。
[0143] 上述本申请序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本申请的几个具体实施场景,但是,本申请并非局限于此,任何本领域的技术人员能思之的变化都
应落入本申请的保护范围。