游戏数据的处理方法及装置、存储介质、计算机设备转让专利
申请号 : CN202010602378.4
文献号 : CN111714895B
文献日 : 2021-07-23
发明人 : 程小三 , 韩永强
申请人 : 天津亚克互动科技有限公司
摘要 :
权利要求 :
1.一种游戏数据的处理方法,其特征在于,包括:获取游戏场景的资源数据,其中,所述资源数据包括所述游戏场景内的游戏资源的资源水平位置数据以及与所述资源水平位置数据对应的资源上表面高度数据和资源下表面高度数据;
基于所述资源数据,确定与所述游戏场景匹配的每个区域块上对应体素的体素信息,将所述游戏资源按层划分生成所述游戏场景的体素文件,其中,每个所述区域块上对应体素的体素信息为与所述区域块水平位置对应的所述资源水平位置数据以及每层游戏资源的高度数据,所述每层游戏资源的高度数据包括对应游戏资源的所述资源上表面高度数据和所述资源下表面高度数据;
接收游戏场景导出指令;
获取所述游戏场景对应的封闭空间数据,其中,所述封闭空间数据包括封闭空间水平位置数据以及与所述封闭空间水平位置数据对应的封闭空间上表面高度数据和封闭空间下表面高度数据;按照所述封闭空间上表面高度数据和所述封闭空间下表面高度数据,对所述体素文件中与所述封闭空间水平位置处对应的所述资源上表面高度数据和所述资源下表面高度数据进行修改,以删除或标记所述体素文件中所述封闭空间上表面高度数据与所述封闭空间下表面高度数据之间的所述资源上表面高度数据和所述资源下表面高度数据,所述封闭空间为游戏角色和NPC无法进入的区域;
基于修改后的体素文件,导出游戏场景。
2.根据权利要求1所述的方法,其特征在于,每个所述区域块包括所述游戏场景中水平面上的一块区域,每块区域的形状和大小为所述游戏场景中任一体素的上表面或下表面的形状和大小。
3.根据权利要求2所述的方法,其特征在于,所述资源上表面高度数据和所述资源下表面高度数据包括至少一对,同一资源水平位置对应的任一资源上表面高度数据与任一资源下表面高度数据互不相同,任意一对所述资源上表面高度数据和所述资源下表面高度数据用于描述相应资源水平位置出的游戏资源上、下表面高度。
4.根据权利要求1所述的方法,其特征在于,所述基于修改后的体素文件,导出游戏场景,具体包括:
获取无效地形数据,其中,所述无效地形数据包括无效地形水平位置数据;
根据所述修改后的体素文件以及所述无效地形数据,导出所述游戏场景。
5.根据权利要求4所述的方法,其特征在于,所述根据所述修改后的体素文件以及所述无效地形数据,导出所述游戏场景,具体包括:基于所述资源水平位置数据以及所述无效地形水平位置数据,创建游戏场景的遮罩层,其中,所述遮罩层包括除所述无效地形水平位置数据外的所述资源水平位置数据;
根据所述遮罩层以及所述修改后的体素文件,导出所述游戏场景。
6.根据权利要求5所述的方法,其特征在于,所述无效地形为所述游戏场景不显示的区域。
7.根据权利要求1所述的方法,其特征在于,所述导出游戏场景之后,所述方法还包括:接收物品摆放请求,其中,所述物品摆放请求包括摆放前的物品体素信息以及摆放后的物品体素信息;
基于所述修改后的体素文件以及所述摆放后的物品体素信息,判断所述摆放后的物品体素信息与所述游戏资源对应的体素信息是否存在重合;
若不存在,则基于所述摆放前的物品体素信息以及所述摆放后的物品体素信息对所述游戏场景内的物品进行摆放并更新所述修改后的体素文件,以及基于所述摆放前的物品体素信息和所述摆放后的物品体素信息生成并发送物品摆放日志;
若存在,则拒绝所述物品摆放请求。
8.一种游戏数据的处理装置,其特征在于,包括:资源数据获取模块,用于获取游戏场景的资源数据,其中,所述资源数据包括所述游戏场景内的游戏资源的资源水平位置数据以及与所述资源水平位置数据对应的资源上表面高度数据和资源下表面高度数据;
体素文件生成模块,用于基于所述资源数据,确定与所述游戏场景匹配的每个区域块上对应体素的体素信息,将所述游戏资源按层划分生成所述游戏场景的体素文件,其中,每个所述区域块上对应体素的体素信息为与所述区域块水平位置对应的所述资源水平位置数据以及每层游戏资源的高度数据,所述每层游戏资源的高度数据包括对应游戏资源的所述资源上表面高度数据和所述资源下表面高度数据;
场景导出指令接收模块,用于接收游戏场景导出指令;
封闭空间数据获取模块,用于获取所述游戏场景对应的封闭空间数据,其中,所述封闭空间数据包括封闭空间水平位置数据以及与所述封闭空间水平位置数据对应的封闭空间上表面高度数据和封闭空间下表面高度数据,所述封闭空间为游戏角色和NPC无法进入的区域;
体素文件修改模块,用于按照所述封闭空间上表面高度数据和所述封闭空间下表面高度数据,对所述体素文件中与所述封闭空间水平位置处对应的所述资源上表面高度数据和所述资源下表面高度数据进行修改,以删除或标记所述体素文件中所述封闭空间上表面高度数据与所述封闭空间下表面高度数据之间的所述资源上表面高度数据和所述资源下表面高度数据;
场景导出模块,用于基于修改后的体素文件,导出游戏场景。
9.一种存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现权利要求1至7中任一项所述的游戏数据的处理方法。
10.一种计算机设备,包括存储介质、处理器及存储在存储介质上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至7中任一项所述的游戏数据的处理方法。
说明书 :
游戏数据的处理方法及装置、存储介质、计算机设备
技术领域
背景技术
流中不断的进化着。目前,MMORPG已经基本进入3D(3Dimensions,三维)时代,3D游戏的玩法
不仅仅在地面,玩家可以在游戏中进行空中飞行、战斗等等。
力大;一种是分层即多层网格,但该方式的缺点是地面以上很难划分层的界限,对于复杂建
筑,在建筑层数较多时,如果完整的表示,需要大量阻挡图,内存占用太大。
发明内容
采用高精度的浮点数表示,有助于提升资源表示精度。
表面高度数据;
述区域块水平位置对应的所述资源水平位置数据以及所述资源上表面高度数据和所述资
源下表面高度数据。
意一对所述资源上表面高度数据和所述资源下表面高度数据用于描述相应资源水平位置
出的游戏资源上、下表面高度。
空间下表面高度数据;
度数据进行修改。
品体素信息和所述摆放后的物品体素信息生成并发送物品摆放日志;
表面高度数据和资源下表面高度数据;
应体素的体素信息为与所述区域块水平位置对应的所述资源水平位置数据以及所述资源
上表面高度数据和所述资源下表面高度数据。
意一对所述资源上表面高度数据和所述资源下表面高度数据用于描述相应资源水平位置
出的游戏资源上、下表面高度。
与所述封闭空间水平位置数据对应的封闭空间上表面高度数据和封闭空间下表面高度数
据;
据和所述资源下表面高度数据进行修改。
件,导出游戏场景。
述资源水平位置数据;
是否存在重合;
基于所述摆放前的物品体素信息和所述摆放后的物品体素信息生成并发送物品摆放日志;
数据的处理方法。
源高度数据来表示,资源高度数据具体包括资源上表面高度和资源下表面高度,从而利用
资源数据确定游戏场景中每个区域块对应的体素信息,生成体素文件。本申请相对于现有
技术中在高度方向上按体素单位大小进行空间划分的方式来说,通过按游戏资源高度数据
对每个区域块对应的高度数据进行分层划分,一层游戏资源对应于一对高度数据,即上表
面高度数据和下表面高度数据,这种稀疏化的体素文件表示方式大大减少了体素文件的内
存占用大小,极大的提高了内存使用效率,并且在高度方向上可以采用高精度的浮点数表
示,这样的高度描述方式,在后续导出游戏场景时,可以使游戏资源在高度方向上更加平
滑,从而提升地形表示的精度。
更明显易懂,以下特举本申请的具体实施方式。
附图说明
具体实施方式
高度数据;
位置对应的资源水平位置数据以及资源上表面高度数据和资源下表面高度数据。
括室内地形,例如房屋、城墙等等)。体素是3D空间的最小表示单位,体素的概念是二维空间
的最小单位像素衍生而来的,像素用于描述二维的影像,而体素则可以用于描述三维空间
上的立体的对象,是三维空间分割上的最小单位,在游戏中可用于行走、飞行、摄像机等碰
撞检测,但在现有技术中,体素因内存过大而难以普及。针对现有技术中所存在的问题,本
申请实施例提供的上述方案,有助于优化体素文件的内存空间占用,该方案适用于前端(客
户端)和后台(服务器)。
构成。体素的具体生成方式可以采用现有技术实现,在一可选方式中,可以基于开源项目
Recast实现,该项目由Mesh(网格)经过体素化、地区生成、轮廓生成、多边形网格生成、高度
细节生成等步骤生成NavMesh,将Recast对Mesh体素化的代码抽出来即可生成体素。本申请
实施例中,每个体素为一个长方体,游戏场景中的游戏资源模型完全由长方体拼成,每个体
素的体素信息包括对应的长方体的上表面高度和下表面高度。在实际应用中,长方体表面
(上表面和下表面)的面积大小可以根据实际需求配置,在一可选方式中,长方体表面的长
度和宽度可以相等,也就是,上下表面的形状为正方形,例如,上下表面的长度和宽度可以
为0.5m(米)。
形资源,比如玩家不可以穿墙、不可以穿越地面进入地下。在实际应用中,游戏场景中的树
叶等不会阻挡玩家移动的资源不用于生成体素文件。游戏资源数据具体可以包含游戏资源
的资源水平位置数据以及与该资源水平位置数据相对应的资源高度数据,为了减少体素文
件数据量,资源高度数据通常通过资源上表面高度数据和资源下表面高度数据来描述,上
表面高度和下表面高度之间的资源在实际游戏场景中一般会被填充,不需要直接显示出
来。例如,一片由石砖铺砌的地面,该地面铺满A区域,那么地面资源对应的资源水平位置数
据应包含A区域对应的水平位置,相应水平位置对应的资源下表面高度数据为石砖的下表
面高度(例如为0),资源上表面高度数据为石砖的上表面高度(例如石砖厚度为20cm,那么
上表面高度为20cm)。再例如,用于支撑房屋的柱子,该柱子竖直立在B区域,柱子对应的资
源水平位置数据应包含B区域对应的水平位置,相应水平位置对应的资源上、下表面高度数
据为该柱子的上、下表面的高度。通过上述方式可以描述出游戏场景内每个游戏资源在三
维空间中的位置,从而可以利用这些位置信息生成游戏场景对应的体素文件。
源上表面高度数据和资源下表面高度数据用于描述相应资源水平位置出的游戏资源上、下
表面高度。游戏资源应有一定的厚度,即任意一对游戏资源对应的上、下表面高度数据不
同,并且游戏资源应该互不重叠,即同一水平位置上对应的任意一个资源上表面高度数据
与任意一个资源下表面高度数据互不相同。
进行区域划分,在本申请实施例中,每个区域块包括游戏场景中水平面上的一块区域,每块
区域的形状和大小为游戏场景中任一体素的上表面或下表面的形状和大小。例如,游戏场
景对应的三维空间的长、宽、高分别是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高度内有实物。
表示(不局限于以体素为单位,现有技术中对于高度的描述需要基于某个区域上对应的体
素空间格子,游戏资源只有包含某个格子或者不包含某个格子两种情况,不能包含某个体
素格子的一部分,而采用浮点数表示则不局限于该描述方式,也可以包含某个体素格子的
一部分),这样的高度描述方式,在后续导出游戏场景时,可以使游戏资源在高度方向上更
加平滑,从而提升地形表示的精度。稀疏化表示使基于体素的三维空间可以应用于对内存
要求严格的手游,为该解决方案提供了技术的理论基础。
和资源下表面高度,从而利用资源数据确定游戏场景中每个区域块对应的体素信息,生成
体素文件。本申请实施例相对于现有技术中在高度方向上按体素单位大小进行空间划分的
方式来说,通过按游戏资源高度数据对每个区域块对应的高度数据进行分层划分,一层游
戏资源对应于一对高度数据,即上表面高度数据和下表面高度数据,这种稀疏化的体素文
件表示方式大大减少了体素文件的内存占用大小,极大的提高了内存使用效率,并且在高
度方向上可以采用高精度的浮点数表示,有助于提升资源表示精度。
高度数据。
位置对应的资源水平位置数据以及资源上表面高度数据和资源下表面高度数据。
下表面高度数据。
间,这些空间在游戏中不允许玩家角色或者NPC角色进入,例如一座门窗紧闭的房间。若按
照资源数据生成体素文件,与该房间水平位置对应的高度数据应包含至少两层,例如一层
地板高度数据和一层屋顶高度数据,然而在实际游戏场景中,由于这件房间是玩家无法进
入的,房间内部的资源不会向玩家展现,因此可以忽略该房间内部的资源。
据,封闭空间高度数据具体包括封闭空间上、下表面高度,基于封闭空间数据对体素文件进
行修改。
于包含地板资源和屋顶资源的房屋,该房屋区域对应的地板资源下表面高度数据为0,上表
面高度数据为0.2m,屋顶资源下表面高度数据为5m,上表面高度数据为5.5米,该房间为封
闭空间,即封闭空间的高度数据为下表面高度0m,上表面高度5.5m,则将体素文件中与封闭
空间的水平位置对应的资源高度数据中0~5.5m之间的数据删除(即删除地板资源上表面
高度数据0.2m和屋顶资源下表面高度数据5m),将封闭空间看做0~5.5m的一层资源,即封
闭空间的下表面高度为0,上表面高度为5.5m,这样封闭空间相应的高度数据的数据量从原
来的4个浮点数修改为2个浮点数,进一步减少了体素文件的数据量,并且,在基于该体素文
件导出游戏场景资源时,该封闭空间直接填实即可,不需要对封闭空间内的详细资源进行
导出,在不影响玩家游戏体验的前提下,提升了导出速度。
封闭空间作为一层资源导出,在保留完整体素文件的前提下,提升导出速度。
高度数据;
区域块水平位置对应的资源水平位置数据以及资源上表面高度数据和资源下表面高度数
据。
下表面高度数据;
素文件进行修改的步骤,不需要导出游戏场景时,体素文件按照原始文件进行保存。而图2
的实施例是对修改后的体素文件进行保存。从游戏场景导出速度来看,直接利用修改后的
体素文件进行导出的方式,导出速度更快。
版本中房间的开放和关闭情况不同,假设房间A在游戏1.0版本中属于封闭空间玩家无法进
入,在游戏2.0版本中在房间A中设置了NPC角色,玩家可以进入房间A与NPC对话领取任务。
对于这种情况,若按照图2的方式基于游戏1.0版本的封闭空间数据对体素文件进行修改,
在游戏更新到2.0版本时,原来的封闭空间变为了开放空间,这时需要导出新的游戏场景时
就需要在1.0版本的体素文件基础上对相应的资源进行修改,即将房间A从原来的封闭空间
修改为开放空间,将房间A从一层资源修改为多层资源,然后再在房间A中添加NPC资源。而
最初设计的游戏场景中房间A可能本身就包含多层资源,若可以基于原始的体素文件导出
游戏场景,只需要在房间A中添加NPC资源即可,修改内容更少,速度更快。因此在本实施例
中,对原始体素文件进行保存,并在接收到游戏场景导出指令以后,利用原始体素文件以及
封闭空间数据进行场景导出,方便对各个版本的游戏场景的导出。
场景时,基于无效地形数据以及体素文件进行场景导出,以使展示的游戏场景中不包含无
效地形区域,减少游戏运行中的内存占用。例如将体素文件中该无效地形水平位置数据对
应的资源数据进行删除,加快场景导出速度。
地形,导出时只显示遮罩层下的区域。图4示出了本申请实施例提供的一种游戏场景示意
图,该游戏场景示意图基于上述方法得到的体素文件导出,基于如图4所示的游戏场景示意
图,进行后续的渲染,就可以得到最终呈现在玩家面前的游戏场景。
摆放后的物品体素信息生成并发送物品摆放日志;
可以将床摆放到房间中,同时将一个桌子摆放到床上,然后再将一个凳子摆放到桌子上。玩
家可以对游戏场景内的物品先进行模拟摆放,基于玩家对物品的模拟摆放生成物品摆放请
求,该请求中具体应包括物品模拟摆放前的位置信息即摆放前的物品体素信息以及物品模
拟摆放后的位置信息即摆放后的物品体素信息,为了避免摆放的物品对游戏场景内的其他
游戏资源造成碰撞,应先检查摆放后的物品体素信息与游戏场景对应的体素信息是否发生
冲突,即摆放后的物品对应的每一个体素是否被游戏场景内的其他游戏资源占用,若未被
其他游戏资源占用,则说明物品可以摆放到模拟摆放的位置上,进一步,可以对物品实现在
游戏场景内的摆放,由于物品的摆放会对游戏空间内相应位置造成阻挡,在对物品进行摆
放的同时还应对游戏场景的体素文件进行更新,移除摆放前的物品体素信息并增加摆放后
的物品体素信息,另外,在网络游戏中玩家移动游戏内物品也会对其他玩家的游戏场景造
成影响,因此还应将物品摆放产生的相应数据上传到游戏服务器中,由服务器向其他玩家
的终端转发这些数据,从而实现其他玩家的客户端中对物品摆放数据的同步,完成服务器
端体素文件以及其他玩家终端体素文件的更新,以免其他玩家终端侧的游戏场景数据不一
致导致的游戏内错误。而若摆放后的物品对应的任意一个体素都被其他游戏资源占用,则
说明物品不可用摆放到模拟摆放的位置上,物品摆失败,拒绝该物品摆放请求。
据和资源下表面高度数据;
息为与区域块水平位置对应的资源水平位置数据以及资源上表面高度数据和资源下表面
高度数据。
不相同,任意一对资源上表面高度数据和资源下表面高度数据用于描述相应资源水平位置
出的游戏资源上、下表面高度。
位置数据对应的封闭空间上表面高度数据和封闭空间下表面高度数据;
数据进行修改。
面高度数据。
数据;
品体素信息和摆放后的物品体素信息生成并发送物品摆放日志;
方法。
用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个
实施场景所述的方法。
设备等,该计算机设备包括存储介质和处理器;存储介质,用于存储计算机程序;处理器,用
于执行计算机程序以实现上述如图1至图3所示的游戏数据的处理方法。
(Display)、输入单元比如键盘(Keyboard)等,可选用户接口还可以包括USB接口、读卡器接
口等。网络接口可选的可以包括标准的有线接口、无线接口(如蓝牙接口、WI‑FI接口)等。
模块用于实现存储介质内部各组件之间的通信,以及与该实体设备中其它硬件和软件之间
通信。
过资源水平位置数据以及与资源水平位置数据对应的资源高度数据来表示,资源高度数据
具体包括资源上表面高度和资源下表面高度,从而利用资源数据确定游戏场景中每个区域
块对应的体素信息,生成体素文件。本申请实施例相对于现有技术中在高度方向上按体素
单位大小进行空间划分的方式来说,通过按游戏资源高度数据对每个区域块对应的高度数
据进行分层划分,一层游戏资源对应于一对高度数据,即上表面高度数据和下表面高度数
据,这种稀疏化的体素文件表示方式大大减少了体素文件的内存占用大小,极大的提高了
内存使用效率,并且在高度方向上可以采用高精度的浮点数表示,有助于提升资源表示精
度。
块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于
本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一
步拆分成多个子模块。
应落入本申请的保护范围。