首页 / 专利库 / 软件 / 逻辑文件 / 游戏场景中节点对象的处理方法及装置

游戏场景中节点对象的处理方法及装置

阅读:1发布:2020-05-13

专利汇可以提供游戏场景中节点对象的处理方法及装置专利检索,专利查询,专利分析的服务。并且本 申请 公开一种游戏场景中 节点 对象的处理方法及装置,其中,游戏场景中节点对象的处理方法包括:创建游戏场景中的动态节点对象和静态节点对象,获取所述静态节点对象对应的 渲染 数据,对所述渲染数据进行静态批处理,以在所述游戏场景中显示所述静态节点对象,获取所述动态节点对象对应的配置文件,运行所述配置文件,并根据所述逻辑运算数据对所述动态节点对象进行逻辑运算,以在所述游戏场景中显示所述动态节点对象,或者,停止显示所述动态节点对象。采用本申请的技术方案,可以有效管理游戏场景中的节点对象,提高游戏的运行性能。,下面是游戏场景中节点对象的处理方法及装置专利的具体信息内容。

1.一种游戏场景中节点对象的处理方法,其特征在于,包括:
创建游戏场景中的动态节点对象和静态节点对象;
获取所述静态节点对象对应的渲染数据;
对所述渲染数据进行静态批处理,以在所述游戏场景中显示所述静态节点对象;
获取所述动态节点对象对应的配置文件,所述配置文件包括与所述动态节点对象关联的逻辑运算数据;
运行所述配置文件,并根据所述逻辑运算数据对所述动态节点对象进行逻辑运算,以在所述游戏场景中显示所述动态节点对象,或者,停止显示所述动态节点对象。
2.如权利要求1所述的方法,其特征在于,所述创建游戏场景中的动态节点对象和静态节点对象,包括:
创建第一父节点和与所述第一父节点关联的至少一个第一子节点,所述第一父节点指示所述游戏场景中的第一动态节点对象,所述至少一个第一子节点指示所述游戏场景中的至少一个第二动态节点对象,一个第一子节点指示一个第二动态节点对象;
创建第二父节点和与所述第二父节点关联的至少一个第二子节点,所述第二父节点指示所述游戏场景中的第一静态节点对象,所述至少一个第二子节点指示所述游戏场景中的至少一个第二静态节点对象,一个第二子节点指示一个第二静态节点对象。
3.如权利要求2所述的方法,其特征在于,所述方法还包括:
为所述第一父节点配置第一脚本文件,所述第一脚本文件包括所述第一动态节点对象关联的逻辑运算数据;
为所述至少一个第一子节点配置至少一个第二脚本文件,一个所述第一子节点配置一个所述第二脚本文件,所述第二脚本文件包括所述第一子节点指示的第二动态节点对象关联的逻辑运算数据;
根据所述第一脚本文件和所述至少一个第二脚本文件,生成所述配置文件。
4.如权利要求1所述的方法,其特征在于,所述运行所述配置文件,并根据所述逻辑运算数据对所述动态节点对象进行逻辑运算,以在所述游戏场景中显示所述动态节点对象,或者,停止显示所述动态节点对象,包括:
若确定当前时刻需要启动显示所述动态节点对象,运行所述配置文件,并根据所述逻辑运算数据对所述动态节点对象进行逻辑运算,以在所述游戏场景中显示所述动态节点对象,其中,在所述当前时刻之前,所述动态节点对象处于未显示状态;或者,若确定当前时刻需要停止显示所述动态节点对象,运行所述配置文件,并根据所述逻辑运算数据对所述动态节点对象进行逻辑运算,以在所述游戏场景中停止显示所述动态节点对象,其中,在所述当前时刻之前,所述动态节点对象处于显示状态。
5.如权利要求4所述的方法,其特征在于,所述根据所述逻辑运算数据对所述动态节点对象进行逻辑运算,以在所述游戏场景中停止显示所述动态节点对象之后,还包括:
删除所述动态节点对象对应的配置文件。
6.如权利要求2所述的方法,其特征在于,所述获取所述静态节点对象对应的渲染数据,包括:
获取所述第二父节点对应的第一渲染数据,所述第一渲染数据包括所述第一静态节点对象的渲染数据;
获取所述至少一个第二子节点对应的至少一个第二渲染数据,所述第二渲染数据包括所述第二子节点指示的第二静态节点对象的渲染数据。
7.如权利要求6所述的方法,其特征在于,所述对所述渲染数据进行静态批处理,以在所述游戏场景中渲染并显示所述静态节点对象,包括:
根据所述第一渲染数据和所述至少一个第二渲染数据生成目标渲染数据;
通过第一绘制命令调用所述目标渲染数据,以在所述游戏场景中渲染并显示所述第一静态节点对象和所述至少一个第二静态节点对象。
8.一种游戏场景中节点对象的处理装置,其特征在于,包括:
创建模,用于创建游戏场景中的动态节点对象和静态节点对象;
第一获取模块,用于获取所述静态节点对象对应的渲染数据;
第一显示模块,用于对所述渲染数据进行静态批处理,以在所述游戏场景中显示所述静态节点对象;
获取所述动态节点对象对应的配置文件,所述配置文件包括与所述动态节点对象关联的逻辑运算数据;
第二显示模块,用于运行所述配置文件,并根据所述逻辑运算数据对所述动态节点对象进行逻辑运算,以在所述游戏场景中显示所述动态节点对象,或者,停止显示所述动态节点对象。
9.一种游戏场景中节点对象的处理装置,其特征在于,包括处理器、存储器以及通信接口,所述处理器、存储器和通信接口相互连接,其中,所述通信接口用于接收和发送数据,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,执行如权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现权利要求1至7任一项所述的方法。

说明书全文

游戏场景中节点对象的处理方法及装置

技术领域

[0001] 本发明涉及计算机技术领域,尤其涉及一种游戏场景中节点对象的处理方法及装置。

背景技术

[0002] 随着游戏的迅速发展,游戏场景中展现出来的画面越来越立体、精细,让玩家们可以更逼真地感知游戏世界,丰富了玩家们的体验感。
[0003] 但是现在市面上的小游戏,游戏场景中的节点对象数量非常多且复杂,没有一种较好的管理节点对象的方式,导致在游戏开发时处理节点对象非常繁琐以及游戏性能受影响。

发明内容

[0004] 本发明实施例提供一种游戏场景中节点对象的处理方法及装置,可以提高游戏的运行性能。
[0005] 第一方面,本发明实施例提供了一种戏场景中节点对象的处理方法,包括:
[0006] 创建游戏场景中的动态节点对象和静态节点对象;
[0007] 获取所述静态节点对象对应的渲染数据;
[0008] 对所述渲染数据进行静态批处理,以在所述游戏场景中显示所述静态节点对象;
[0009] 获取所述动态节点对象对应的配置文件,所述配置文件包括与所述动态节点对象关联的逻辑运算数据;
[0010] 运行所述配置文件,并根据所述逻辑运算数据对所述动态节点对象进行逻辑运算,以在所述游戏场景中显示所述动态节点对象,或者,停止显示所述动态节点对象。
[0011] 在一种可能实现的实施例中,所述创建游戏场景中的动态节点对象和静态节点对象,包括:
[0012] 创建第一父节点和与所述第一父节点关联的至少一个第一子节点,所述第一父节点指示所述游戏场景中的第一动态节点对象,所述至少一个第一子节点指示所述游戏场景中的至少一个第二动态节点对象,一个第一子节点指示一个第二动态节点对象;
[0013] 创建第二父节点和与所述第二父节点关联的至少一个第二子节点,所述第二父节点指示所述游戏场景中的第一静态节点对象,所述至少一个第二子节点指示所述游戏场景中的至少一个第二静态节点对象,一个第二子节点指示一个第二静态节点对象。
[0014] 在一种可能实现的实施例中,所述方法还包括:
[0015] 为所述第一父节点配置第一脚本文件,所述第一脚本文件包括所述第一动态节点对象关联的逻辑运算数据;
[0016] 为所述至少一个第一子节点配置至少一个第二脚本文件,一个所述第一子节点配置一个所述第二脚本文件,所述第二脚本文件包括所述第一子节点指示的第二动态节点对象关联的逻辑运算数据;
[0017] 根据所述第一脚本文件和所述至少一个第二脚本文件,生成所述配置文件。
[0018] 在一种可能实现的实施例中,所述运行所述配置文件,并根据所述逻辑运算数据对所述动态节点对象进行逻辑运算,以在所述游戏场景中显示所述动态节点对象,或者,停止显示所述动态节点对象,包括:
[0019] 若确定当前时刻需要启动显示所述动态节点对象,运行所述配置文件,并根据所述逻辑运算数据对所述动态节点对象进行逻辑运算,以在所述游戏场景中显示所述动态节点对象,其中,在所述当前时刻之前,所述动态节点对象处于未显示状态;或者,[0020] 若确定当前时刻需要停止显示所述动态节点对象,运行所述配置文件,并根据所述逻辑运算数据对所述动态节点对象进行逻辑运算,以在所述游戏场景中停止显示所述动态节点对象,其中,在所述当前时刻之前,所述动态节点对象处于显示状态。
[0021] 在一种可能实现的实施例中,所述根据所述逻辑运算数据对所述动态节点对象进行逻辑运算,以在所述游戏场景中停止显示所述动态节点对象之后,还包括:
[0022] 删除所述动态节点对象对应的配置文件。
[0023] 在一种可能实现的实施例中,所述获取所述静态节点对象对应的渲染数据,包括:
[0024] 获取所述第二父节点对应的第一渲染数据,所述第一渲染数据包括所述第一静态节点对象的渲染数据;
[0025] 获取所述至少一个第二子节点对应的至少一个第二渲染数据,所述第二渲染数据包括所述第二子节点指示的第二静态节点对象的渲染数据。
[0026] 在一种可能实现的实施例中,所述对所述渲染数据进行静态批处理,以在所述游戏场景中渲染并显示所述静态节点对象,包括:
[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] 生成单元,用于根据所述第一渲染数据和所述至少一个第二渲染数据生成目标渲染数据;
[0052] 显示单元,用于通过第一绘制命令调用所述目标渲染数据,以在所述游戏场景中渲染并显示所述第一静态节点对象和所述至少一个第二静态节点对象。
[0053] 第三方面,本发明实施例提供一种戏场景中节点对象的处理装置,包括处理器、存储器以及通信接口,所述处理器、存储器和通信接口相互连接,其中,所述通信接口用于接收和发送数据,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,执行第一方面所述的方法。
[0054] 第四方面,本发明实施例提供一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行第一方面所述的方法。
[0055] 在本发明实施例中,通过创建游戏场景中的动态节点对象和静态节点对象,获取所述静态节点对象对应的渲染数据,对所述渲染数据进行静态批处理,以在所述游戏场景中显示所述静态节点对象,获取所述动态节点对象对应的配置文件,运行所述配置文件,并根据所述逻辑运算数据对所述动态节点对象进行逻辑运算,以在所述游戏场景中显示所述动态节点对象,或者,停止显示所述动态节点对象。采用本申请的技术方案,分别对静态节点对象和动态节点对象采取不同的处理方式,静态节点对象的渲染数据进行静态合批处理,不用进行逻辑运算,而仅仅对动态节点对象进行逻辑运算,提高游戏的运行性能。附图说明
[0056] 为了说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
[0057] 图1为本发明实施例提供的一种戏场景中节点对象的处理方法的流程图
[0058] 图2为本发明实施例提供的一种生成配置文件方法的流程示意图;
[0059] 图3为本发明实施例提供的一种戏场景中节点对象的处理装置的结构示意图;
[0060] 图4为本发明实施例提供的另一种戏场景中节点对象的处理装置的结构示意图;
[0061] 图5为本发明实施例提供的又一种戏场景中节点对象的处理装置的结构示意图。

具体实施方式

[0062] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
[0063] 下面将结合附图1-附图2,对本发明实施例提供的一种戏场景中节点对象的处理方法进行详细介绍。
[0064] 请参见图1,为本发明实施例提供的一种戏场景中节点对象的处理方法的流程示意图。如图1所示,本发明实施例的所述戏场景中节点对象的处理方法可以包括以下步骤S101-步骤S105。
[0065] S101,创建游戏场景中的动态节点对象和静态节点对象;
[0066] 在本发明实施例中,游戏场景是指根据游戏设计要求还原出游戏中的建筑物、树木、天空、道路等可用节点对象的画面。在3D游戏中,游戏场景提供一个包含了各种节点对象的空间,该空间由所需设计游戏场景画面的宽度、深度和高度来共同确定。游戏场景中的节点对象可以是游戏场景中包含的人物、建筑、机械、道具、山石树木等。如游戏场景中有一些树、一些石头、一些人物等等,那么这些树、石头、人物等等可以作为游戏场景中的节点对象。
[0067] 其中,可以通过创建第一父节点和与第一父节点关联的至少一个第一子节点,该第一父节点指示游戏场景中的第一动态节点对象,至少一个第一子节点指示游戏场景中的至少一个第二动态节点对象,一个第一子节点指示一个第二动态节点对象。创建第二父节点和与第二父节点关联的至少一个第二子节点,该第二父节点指示游戏场景中的第一静态节点对象,至少一个第二子节点指示游戏场景中的至少一个第二静态节点对象,一个第二子节点指示一个第二静态节点对象。通过创建一个第一父节点和一个第二父节点,再根据一个第一父节点和一个第二父节点创建至少一个第一子节点与至少一个第二子节点,以此将游戏场景中的节点进行动静划分,创建游戏场景中的动态节点对象和静态节点对象。
[0068] 可选的,可以利用游戏开发工具Unity3D,创建第一父节点和第二父节点,再根据所要建立的游戏场景画面,创建至少一个第一子节点和至少一个第二子节点,该第一父节点指示游戏场景中的第一动态节点对象,至少一个第一子节点指示游戏场景中的至少一个第二动态节点对象,动态节点对象是指游戏场景中运动的物体,如行走的人物或者上下移动的大锤等等。该第二父节点指示游戏场景中的第一静态节点对象,至少一个第二子节点指示游戏场景中的至少一个第二静态节点对象,静态节点对象是指游戏场景中静止的物体,如路两旁相对静止的石头、树木等等。
[0069] S102,获取所述静态节点对象对应的渲染数据;
[0070] S103,对所述渲染数据进行静态批处理,以在所述游戏场景中显示所述静态节点对象;
[0071] 在本发明实施例中,获取静态节点对象的渲染数据,本发明实施例中的静态节点对象包括第二父节点以及至少一个第二子节点,获取第二父节点对应的第一渲染数据,第一渲染数据包括所述第一静态节点对象的渲染数据,获取至少一个第二子节点对应的至少一个第二渲染数据,第二渲染数据包括第二子节点指示的第二静态节点对象的渲染数据。根据所述第一渲染数据和所述至少一个第二渲染数据生成目标渲染数据,通过第一绘制命令调用所述目标渲染数据,以在所述游戏场景中渲染并显示所述第一静态节点对象和所述至少一个第二静态节点对象。
[0072] 其中,可以将大量的不需要改变位置的静态节点对象对应的渲染数据进行静态批处理,在Unity3D游戏场景中将不改变位置的所有静态节点对象都勾选了静态选项,引擎会根据静态节点对象的渲染数据判断游戏场景中的静态节点对象是否共用同一渲染材质,如共用同一种渲染材质木头。如果共用同一渲染材质,则会将共用同一种渲染材质的静态节点对象视为可以批处理的对象。在渲染的时候,会将共同一种渲染材质的至少一个静态节点对象对应的至少一个mesh合成一个更大的mesh,生成目标渲染数据,CPU根据目标渲染数据提交一个第一绘制命令,存在一个命令缓冲区buffer中,GPU在该命令缓冲区buffer提取第一绘制命令进行渲染操作的。该第一绘制命令是指Draw Call,在Unity中,每次引擎准备数据并通知GPU的过程称为一次Draw Call。CPU和GPU是通过命令缓冲区来实现并行工作,命令缓冲区存放CPU的命令,GPU从其中取出命令执行;DrawCall就是CPU提交到命令缓冲区的命令之一,DrawCall越多,CPU提交次数越多,跟读取文件一样,次数太多就导致CPU耗费大量时间提交,造成CPU过载。游戏运行过程中,是一个实时调用GPU的过程,,若因为CPU过载而使GPU在调用过程中频繁被中断,再重新运算,对性能来说是影响极大的,因此将游戏场景中的静态节点对象的渲染数据进行静态批处理,减少Draw Call的数量,以减少GPU渲染调用时被中断的次数,提高游戏的运行性能。
[0073] 例如,游戏场景中有4个物体A、B、C、D,如果都勾选了静态选项,在进行静态批处理的时候,引擎会判断这四个物体是否共用同一渲染材质。如果共用同一渲染材质,则会将这四个物体视为可以批处理的对象,引擎会将A、B、C、D这四个物体对应的4个mesh合成一个更大的mesh,并生成一个绘制命令Draw Call存在命令缓冲区buffer中,通过该绘制命令Draw Call调用GPU对着四个物体进行绘制。若不进行静态批处理,A、B、C、D这四个物体就会生成四个绘制命令Draw Call,当游戏场景中的静态节点数越多时,就会产生更多的绘制命令Draw Call,从而导致GPU在调用过程中频繁被中断,因此对游戏场景中的静态节点对象的渲染数据进行静态批处理,减少Draw Call的数量,以减少GPU渲染调用时被中断的次数,提高游戏的运行性能。
[0074] S104,获取所述动态节点对象对应的配置文件,所述配置文件包括与所述动态节点对象关联的逻辑运算数据;
[0075] S105,运行所述配置文件,并根据所述逻辑运算数据对所述动态节点对象进行逻辑运算,以在所述游戏场景中显示所述动态节点对象,或者,停止显示所述动态节点对象。
[0076] 请参照图2,为本发明实施例提供的一种生成配置文件方法的流程示意图,如图2所示,本发明实施例的所述生成配置文件方法可以包括以下步骤S21-步骤S23:
[0077] S21,为所述第一父节点配置第一脚本文件,所述第一脚本文件包括所述第一动态节点对象关联的逻辑运算数据;
[0078] S22,为所述至少一个第一子节点配置至少一个第二脚本文件,一个所述第一子节点配置一个所述第二脚本文件,所述第二脚本文件包括所述第一子节点指示的第二动态节点对象关联的逻辑运算数据;
[0079] S23,根据所述第一脚本文件和所述至少一个第二脚本文件,生成所述配置文件。
[0080] 在本实施例中,可以为所述第一父节点配置第一脚本文件,该第一脚本文件包括第一动态节点对象关联的逻辑运算数据,为至少一个第一子节点配置至少一个第二脚本文件,一个第一子节点配置一个第二脚本文件,第二脚本文件包括第一子节点指示的第二动态节点对象关联的逻辑运算数据。为游戏场景中所有的动态节点对象配置脚本文件之后,记录每个动态节点在游戏场景中运行时所需的时序数据。根据所述第一脚本文件和所述至少一个第二脚本文件,生成所述配置文件,该配置文件可以为JSON文件,即导出动态节点对象脚本文件中的逻辑运算数据为JSON文件。而静态节点对象在游戏场景中是静止的,不需要移动,所以静态节点对象是不绑定任何逻辑运算数据的,也不操作任何数据。因此将游戏场景中的节点对象进行动静划分之后,只需要对运动的动态节点对象配置脚本文件,而静态节点对象不需要配置文件,优化了终端的内存。
[0081] 在游戏运行过程中,获取所述动态节点对象对应的配置文件之后,即获取JSON文件,运行所述配置文件,并根据所述逻辑运算数据对所述动态节点对象进行逻辑运算,以在所述游戏场景中显示所述动态节点对象,或者,停止显示所述动态节点对象。
[0082] 其中,若确定当前时刻需要启动显示所述动态节点对象,运行所述配置文件,并根据所述逻辑运算数据对所述动态节点对象进行逻辑运算,以在所述游戏场景中显示所述动态节点对象,其中,在所述当前时刻之前,所述动态节点对象处于未显示状态;或者,若确定当前时刻需要停止显示所述动态节点对象,运行所述配置文件,并根据所述逻辑运算数据对所述动态节点对象进行逻辑运算,以在所述游戏场景中停止显示所述动态节点对象,其中,在所述当前时刻之前,所述动态节点对象处于显示状态。
[0083] 例如,在滚动的天空2小游戏中,当玩家点击游戏开始后,便会根据所有动态节点对象的渲染数据,以及静态节点对象的渲染数据,加载游戏的3D场景游戏。其中,会对所有静态节点对象的渲染数据进行静态批处理后再在所述游戏场景中显示。而动态节点对象确定某一时刻需要启动显示时,就会运行取配置文件,获取对应的脚本文件中的逻辑运算数据,根据对应的脚本文件中的逻辑运算数据,在游戏场景中显示。而静态节点对象已经启动显示,并且不参与任何的逻辑运算。3D游戏场景加载完成后,确定当前时刻要启动玩家色,玩家角色是指由用户在游戏场景中控制的虚拟角色,则运行玩家角色对应的脚本文件中逻辑运算数据,玩家角色根据其渲染数据以及脚本文件中逻辑运算数据在游戏场景中显示,并在用户的操作下进行移动。当玩家角色在某一时刻移动到某一位置时,若确定当前时刻需要启动显示玩家角色周围的动态节点对象时,玩家角色周围的动态节点对象就会获取对应的脚本文件中的逻辑运算数据,并根据所述逻辑运算数据进行逻辑运算,以在游戏场景中显示,其中,在当前时刻之前,该动态节点对象处于未显示状态。若确定需要停止显示与玩家角色相隔一定距离的动态节点对象,该相隔一定距离的动态节点对象就会获取对应的脚本文件中的逻辑运算数据,并根据逻辑运算数据进行逻辑运算,以在游戏场景中停止显示。其中,在当前时刻之前,相隔一定距离的动态节点对象处于显示状态。而与玩家角色相隔一定距离且处于未启动显示状态的动态节点对象,会根据玩家角色的移动而启动显示。
[0084] 可选的,与玩家角色相隔一定距离且处于显示状态的动态节点对象在游戏场景中停止显示之后,删除该动态节点对象对应的配置文件,以此优化终端的内存。
[0085] 在本发明实施例中,通过创建游戏场景中的动态节点对象和静态节点对象,获取所述静态节点对象对应的渲染数据,对所述渲染数据进行静态批处理,以在所述游戏场景中显示所述静态节点对象,获取所述动态节点对象对应的配置文件,运行所述配置文件,并根据所述逻辑运算数据对所述动态节点对象进行逻辑运算,以在所述游戏场景中显示所述动态节点对象,或者,停止显示所述动态节点对象。由于动态节点需要与游戏逻辑密切相关,因此将游戏场景中的节点对象进行动静划分之后,对动态节点对象和静态节点对象进行分开处理,只需注重关注动态节点即可,并且将静态节点对象的渲染数据进行静态批处理,减少Draw Call的数量,以减少GPU渲染条用时被中断的次数,并及时删除需要删除的动态节点对象中的配置文件,优化内存。采用本申请的技术方案,分别对静态节点对象和动态节点对象采取不同的处理方式,静态节点对象的渲染数据进行静态合批处理,不用进行逻辑运算,而仅仅对动态节点对象进行逻辑运算,提高游戏的运行性能。
[0086] 请参见图3,为本发明实施例提供了一种游戏场景中节点对象的处理装置的结构示意图。如图3所示,本发明实施例的所述游戏场景中节点对象的处理装置可以包括:
[0087] S11,创建模块,用于创建游戏场景中的动态节点对象和静态节点对象;
[0088] 其中,创建模块包括第一创建单元、第二创建单元;
[0089] 第一创建单元,用于创建第一父节点和与所述第一父节点关联的至少一个第一子节点,所述第一父节点指示所述游戏场景中的第一动态节点对象,所述至少一个第一子节点指示所述游戏场景中的至少一个第二动态节点对象,一个第一子节点指示一个第二动态节点对象;
[0090] 第二创建单元,用于创建第二父节点和与所述第二父节点关联的至少一个第二子节点,所述第二父节点指示所述游戏场景中的第一静态节点对象,所述至少一个第二子节点指示所述游戏场景中的至少一个第二静态节点对象,一个第二子节点指示一个第二静态节点对象。
[0091] 在本发明实施例中,游戏场景是指根据游戏设计要求还原出游戏中的建筑物、树木、天空、道路等可用节点对象的画面。在3D游戏中,游戏场景提供一个包含了各种节点对象的空间,该空间由所需设计游戏场景画面的宽度、深度和高度来共同确定。游戏场景中的节点对象可以是游戏场景中包含的人物、建筑、机械、道具、山石树木等。如游戏场景中有一些树、一些石头、一些人物等等,那么这些树、石头、人物等等可以作为游戏场景中的节点对象。
[0092] 其中,可以通过创建第一父节点和与第一父节点关联的至少一个第一子节点,该第一父节点指示游戏场景中的第一动态节点对象,至少一个第一子节点指示游戏场景中的至少一个第二动态节点对象,一个第一子节点指示一个第二动态节点对象。创建第二父节点和与第二父节点关联的至少一个第二子节点,该第二父节点指示游戏场景中的第一静态节点对象,至少一个第二子节点指示游戏场景中的至少一个第二静态节点对象,一个第二子节点指示一个第二静态节点对象。通过创建一个第一父节点和一个第二父节点,再根据一个第一父节点和一个第二父节点创建至少一个第一子节点与至少一个第二子节点,以此将游戏场景中的节点进行动静划分,创建游戏场景中的动态节点对象和静态节点对象。
[0093] 可选的,可以利用游戏开发工具Unity3D,创建第一父节点和第二父节点,再根据所要建立的游戏场景画面,创建至少一个第一子节点和至少一个第二子节点,该第一父节点指示游戏场景中的第一动态节点对象,至少一个第一子节点指示游戏场景中的至少一个第二动态节点对象,动态节点对象是指游戏场景中运动的物体,如行走的人物或者上下移动的大锤等等。该第二父节点指示游戏场景中的第一静态节点对象,至少一个第二子节点指示游戏场景中的至少一个第二静态节点对象,静态节点对象是指游戏场景中静止的物体,如路两旁相对静止的石头、树木等等。
[0094] S12,第一获取模块,用于获取所述静态节点对象对应的渲染数据;
[0095] 其中,第一获取模块包括第一获取单元、第二获取单元;
[0096] 第一获取单元,用于获取所述第二父节点对应的第一渲染数据,所述第一渲染数据包括所述第一静态节点对象的渲染数据;
[0097] 第二获取单元,用于获取所述至少一个第二子节点对应的至少一个第二渲染数据,所述第二渲染数据包括所述第二子节点指示的第二静态节点对象的渲染数据。
[0098] S13,第一显示模块,用于对所述渲染数据进行静态批处理,以在所述游戏场景中显示所述静态节点对象;
[0099] 其中,第一显示模块包括生成单元、显示单元;
[0100] 生成单元,用于根据所述第一渲染数据和所述至少一个第二渲染数据生成目标渲染数据;
[0101] 显示单元,用于通过第一绘制命令调用所述目标渲染数据,以在所述游戏场景中渲染并显示所述第一静态节点对象和所述至少一个第二静态节点对象。
[0102] 在本发明实施例中,获取静态节点对象的渲染数据,本发明实施例中的静态节点对象包括第二父节点以及至少一个第二子节点,获取第二父节点对应的第一渲染数据,第一渲染数据包括所述第一静态节点对象的渲染数据,获取至少一个第二子节点对应的至少一个第二渲染数据,第二渲染数据包括第二子节点指示的第二静态节点对象的渲染数据。根据所述第一渲染数据和所述至少一个第二渲染数据生成目标渲染数据,通过第一绘制命令调用所述目标渲染数据,以在所述游戏场景中渲染并显示所述第一静态节点对象和所述至少一个第二静态节点对象。
[0103] 其中,可以将大量的不需要改变位置的静态节点对象对应的渲染数据进行静态批处理,在Unity3D游戏场景中将不改变位置的所有静态节点对象都勾选了静态选项,引擎会根据静态节点对象的渲染数据判断游戏场景中的静态节点对象是否共用同一渲染材质,如共用同一种渲染材质木头。如果共用同一渲染材质,则会将共用同一种渲染材质的静态节点对象视为可以批处理的对象。在渲染的时候,会将共同一种渲染材质的至少一个静态节点对象对应的至少一个mesh合成一个更大的mesh,生成目标渲染数据,CPU根据目标渲染数据提交一个第一绘制命令,存在一个命令缓冲区buffer中,GPU在该命令缓冲区buffer提取第一绘制命令进行渲染操作的。该第一绘制命令是指Draw Call,在Unity中,每次引擎准备数据并通知GPU的过程称为一次Draw Call。CPU和GPU是通过命令缓冲区来实现并行工作,命令缓冲区存放CPU的命令,GPU从其中取出命令执行;DrawCall就是CPU提交到命令缓冲区的命令之一,DrawCall越多,CPU提交次数越多,跟读取文件一样,次数太多就导致CPU耗费大量时间提交,造成CPU过载。游戏运行过程中,是一个实时调用GPU的过程,,若因为CPU过载而使GPU在调用过程中频繁被中断,再重新运算,对性能来说是影响极大的,因此将游戏场景中的静态节点对象的渲染数据进行静态批处理,减少Draw Call的数量,以减少GPU渲染调用时被中断的次数,提高游戏的运行性能。
[0104] 例如,游戏场景中有4个物体A、B、C、D,如果都勾选了静态选项,在进行静态批处理的时候,引擎会判断这四个物体是否共用同一渲染材质。如果共用同一渲染材质,则会将这四个物体视为可以批处理的对象,引擎会将A、B、C、D这四个物体对应的4个mesh合成一个更大的mesh,并生成一个绘制命令Draw Call存在命令缓冲区buffer中,通过该绘制命令Draw Call调用GPU对着四个物体进行绘制。若不进行静态批处理,A、B、C、D这四个物体就会生成四个绘制命令Draw Call,当游戏场景中的静态节点数越多时,就会产生更多的绘制命令Draw Call,从而导致GPU在调用过程中频繁被中断,因此对游戏场景中的静态节点对象的渲染数据进行静态批处理,减少Draw Call的数量,以减少GPU渲染调用时被中断的次数,提高游戏的运行性能。
[0105] S14,第二获取模块,用于获取所述动态节点对象对应的配置文件,所述配置文件包括与所述动态节点对象关联的逻辑运算数据;
[0106] S15,第二显示模块,用于运行所述配置文件,并根据所述逻辑运算数据对所述动态节点对象进行逻辑运算,以在所述游戏场景中显示所述动态节点对象,或者,停止显示所述动态节点对象。
[0107] 在游戏运行过程中,获取所述动态节点对象对应的配置文件之后,即获取JSON文件,运行所述配置文件,并根据所述逻辑运算数据对所述动态节点对象进行逻辑运算,以在所述游戏场景中显示所述动态节点对象,或者,停止显示所述动态节点对象。
[0108] 其中,若确定当前时刻需要启动显示所述动态节点对象,运行所述配置文件,并根据所述逻辑运算数据对所述动态节点对象进行逻辑运算,以在所述游戏场景中显示所述动态节点对象,其中,在所述当前时刻之前,所述动态节点对象处于未显示状态;或者,若确定当前时刻需要停止显示所述动态节点对象,运行所述配置文件,并根据所述逻辑运算数据对所述动态节点对象进行逻辑运算,以在所述游戏场景中停止显示所述动态节点对象,其中,在所述当前时刻之前,所述动态节点对象处于显示状态。
[0109] 例如,在滚动的天空2小游戏中,当玩家点击游戏开始后,便会根据所有动态节点对象的渲染数据,以及静态节点对象的渲染数据,加载游戏的3D场景游戏。其中,会对所有静态节点对象的渲染数据进行静态批处理后再在所述游戏场景中显示。而动态节点对象确定某一时刻需要启动显示时,就会运行取配置文件,获取对应的脚本文件中的逻辑运算数据,根据对应的脚本文件中的逻辑运算数据,在游戏场景中显示。而静态节点对象已经启动显示,并且不参与任何的逻辑运算。3D游戏场景加载完成后,确定当前时刻要启动玩家角色,玩家角色是指由用户在游戏场景中控制的虚拟角色,则运行玩家角色对应的脚本文件中逻辑运算数据,玩家角色根据其渲染数据以及脚本文件中逻辑运算数据在游戏场景中显示,并在用户的操作下进行移动。当玩家角色在某一时刻移动到某一位置时,若确定当前时刻需要启动显示玩家角色周围的动态节点对象时,玩家角色周围的动态节点对象就会获取对应的脚本文件中的逻辑运算数据,并根据所述逻辑运算数据进行逻辑运算,以在游戏场景中显示,其中,在当前时刻之前,该动态节点对象处于未显示状态。若确定需要停止显示与玩家角色相隔一定距离的动态节点对象,该相隔一定距离的动态节点对象就会获取对应的脚本文件中的逻辑运算数据,并根据逻辑运算数据进行逻辑运算,以在游戏场景中停止显示。其中,在当前时刻之前,相隔一定距离的动态节点对象处于显示状态。而与玩家角色相隔一定距离且处于未启动显示状态的动态节点对象,会根据玩家角色的移动而启动显示。
[0110] 可选的,与玩家角色相隔一定距离且处于未启动显示状态的动态节点对象在游戏场景中停止显示之后,删除该动态节点对象对应的配置文件,以此优化终端的内存。
[0111] 在本发明实施例中,通过创建游戏场景中的动态节点对象和静态节点对象,获取所述静态节点对象对应的渲染数据,对所述渲染数据进行静态批处理,以在所述游戏场景中显示所述静态节点对象,获取所述动态节点对象对应的配置文件,运行所述配置文件,并根据所述逻辑运算数据对所述动态节点对象进行逻辑运算,以在所述游戏场景中显示所述动态节点对象,或者,停止显示所述动态节点对象。由于动态节点需要与游戏逻辑密切相关,因此将游戏场景中的节点对象进行动静划分之后,对动态节点对象和静态节点对象进行分开处理,只需注重关注动态节点即可,并且将静态节点对象的渲染数据进行静态批处理,减少Draw Call的数量,以减少GPU渲染条用时被中断的次数。采用本申请的技术方案,分别对静态节点对象和动态节点对象采取不同的处理方式,静态节点对象的渲染数据进行静态合批处理,不用进行逻辑运算,而仅仅对动态节点对象进行逻辑运算,提高游戏的运行性能。
[0112] 如图4所示,为本发明实施例提供的另一种游戏场景中节点对象的处理装置的结构示意图,如图所示,本发明实施例提供的游戏场景中节点对象的处理装置包括:创建模块21、第一配置模块22、第二配置模块23、生成模块24、第一获取模块25、第一显示模块26、第二获取模块27、第二显示模块28、删除模块29;其中,创建模块21、第一获取模块25、第一显示模块26、第二获取模块27、第二显示模块请参照图3实施例的描述,在此不再赘述。
[0113] 第一配置模块22,用于为所述第一父节点配置第一脚本文件,所述第一脚本文件包括所述第一动态节点对象关联的逻辑运算数据;
[0114] 第二配置模块23,用于为所述至少一个第一子节点配置至少一个第二脚本文件,一个所述第一子节点配置一个所述第二脚本文件,所述第二脚本文件包括所述第一子节点指示的第二动态节点对象关联的逻辑运算数据;
[0115] 生成模块24,用于根据所述第一脚本文件和所述至少一个第二脚本文件,生成所述配置文件;
[0116] 在本实施例中,可以为所述第一父节点配置第一脚本文件,该第一脚本文件包括第一动态节点对象关联的逻辑运算数据,为至少一个第一子节点配置至少一个第二脚本文件,一个第一子节点配置一个第二脚本文件,第二脚本文件包括第一子节点指示的第二动态节点对象关联的逻辑运算数据。为游戏场景中所有的动态节点对象配置脚本文件之后,记录每个动态节点在游戏场景中运行时所需的时序数据。根据所述第一脚本文件和所述至少一个第二脚本文件,生成所述配置文件,该配置文件可以为JSON文件,即导出动态节点对象脚本文件中的逻辑运算数据为JSON文件。而静态节点对象在游戏场景中是静止的,不需要移动,所以静态节点对象是不绑定任何逻辑运算数据的,也不操作任何数据。因此将游戏场景中的节点对象进行动静划分之后,只需要对运动的动态节点对象配置脚本文件,而静态节点对象不需要配置文件,优化了终端的内存。
[0117] 删除模块29,用于删除所述动态节点对象对应的配置文件。
[0118] 可选的,与玩家角色相隔一定距离且处于显示状态的动态节点对象在游戏场景中停止显示之后,删除该动态节点对象对应的配置文件,以此优化终端的内存。
[0119] 在本发明实施例中,通过创建游戏场景中的动态节点对象和静态节点对象,获取所述静态节点对象对应的渲染数据,对所述渲染数据进行静态批处理,以在所述游戏场景中显示所述静态节点对象,获取所述动态节点对象对应的配置文件,运行所述配置文件,并根据所述逻辑运算数据对所述动态节点对象进行逻辑运算,以在所述游戏场景中显示所述动态节点对象,或者,停止显示所述动态节点对象。由于动态节点需要与游戏逻辑密切相关,因此将游戏场景中的节点对象进行动静划分之后,对动态节点对象和静态节点对象进行分开处理,只需注重关注动态节点即可,并且将静态节点对象的渲染数据进行静态批处理,减少Draw Call的数量,以减少GPU渲染条用时被中断的次数,并及时删除需要删除的动态节点对象中的配置文件,优化内存。采用本申请的技术方案,分别对静态节点对象和动态节点对象采取不同的处理方式,静态节点对象的渲染数据进行静态合批处理,不用进行逻辑运算,而仅仅对动态节点对象进行逻辑运算,提高游戏的运行性能。
[0120] 请参照图5,为本发明实施例提供的又一种游戏场景中节点对象的处理装置的结构示意图,如图5所示,所述游戏场景中节点对象的处理装置1000可以包括:至少一个处理器1001,例如CPU,至少一个通信接口1003,存储器1004,至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。通信接口1003可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1004可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1004可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图5所示,作为一种计算机存储介质的存储器1004中可以包括操作系统、网络通信模块以及程序指令。
[0121] 在图5所示的游戏场景中节点对象的处理装置1000中,处理器1001可以用于加载存储器1004中存储的程序指令,并具体执行以下操作:
[0122] 创建游戏场景中的动态节点对象和静态节点对象;
[0123] 获取所述静态节点对象对应的渲染数据;
[0124] 对所述渲染数据进行静态批处理,以在所述游戏场景中显示所述静态节点对象;
[0125] 获取所述动态节点对象对应的配置文件,所述配置文件包括与所述动态节点对象关联的逻辑运算数据;
[0126] 运行所述配置文件,并根据所述逻辑运算数据对所述动态节点对象进行逻辑运算,以在所述游戏场景中显示所述动态节点对象,或者,停止显示所述动态节点对象。
[0127] 在一种可能实现的实施例中,所述创建游戏场景中的动态节点对象和静态节点对象,包括:
[0128] 创建第一父节点和与所述第一父节点关联的至少一个第一子节点,所述第一父节点指示所述游戏场景中的第一动态节点对象,所述至少一个第一子节点指示所述游戏场景中的至少一个第二动态节点对象,一个第一子节点指示一个第二动态节点对象;
[0129] 创建第二父节点和与所述第二父节点关联的至少一个第二子节点,所述第二父节点指示所述游戏场景中的第一静态节点对象,所述至少一个第二子节点指示所述游戏场景中的至少一个第二静态节点对象,一个第二子节点指示一个第二静态节点对象。
[0130] 在一种可能实现的实施例中,所述方法还包括:
[0131] 为所述第一父节点配置第一脚本文件,所述第一脚本文件包括所述第一动态节点对象关联的逻辑运算数据;
[0132] 为所述至少一个第一子节点配置至少一个第二脚本文件,一个所述第一子节点配置一个所述第二脚本文件,所述第二脚本文件包括所述第一子节点指示的第二动态节点对象关联的逻辑运算数据;
[0133] 根据所述第一脚本文件和所述至少一个第二脚本文件,生成所述配置文件。
[0134] 在一种可能实现的实施例中,所述运行所述配置文件,并根据所述逻辑运算数据对所述动态节点对象进行逻辑运算,以在所述游戏场景中显示所述动态节点对象,或者,停止显示所述动态节点对象,包括:
[0135] 若确定当前时刻需要启动显示所述动态节点对象,运行所述配置文件,并根据所述逻辑运算数据对所述动态节点对象进行逻辑运算,以在所述游戏场景中显示所述动态节点对象,其中,在所述当前时刻之前,所述动态节点对象处于未显示状态;或者,[0136] 若确定当前时刻需要停止显示所述动态节点对象,运行所述配置文件,并根据所述逻辑运算数据对所述动态节点对象进行逻辑运算,以在所述游戏场景中停止显示所述动态节点对象,其中,在所述当前时刻之前,所述动态节点对象处于显示状态。
[0137] 在一种可能实现的实施例中,所述根据所述逻辑运算数据对所述动态节点对象进行逻辑运算,以在所述游戏场景中停止显示所述动态节点对象之后,还包括:
[0138] 删除所述动态节点对象对应的配置文件。
[0139] 在一种可能实现的实施例中,所述获取所述静态节点对象对应的渲染数据,包括:
[0140] 获取所述第二父节点对应的第一渲染数据,所述第一渲染数据包括所述第一静态节点对象的渲染数据;
[0141] 获取所述至少一个第二子节点对应的至少一个第二渲染数据,所述第二渲染数据包括所述第二子节点指示的第二静态节点对象的渲染数据。
[0142] 在一种可能实现的实施例中,所述对所述渲染数据进行静态批处理,以在所述游戏场景中渲染并显示所述静态节点对象,包括:
[0143] 根据所述第一渲染数据和所述至少一个第二渲染数据生成目标渲染数据;
[0144] 通过第一绘制命令调用所述目标渲染数据,以在所述游戏场景中渲染并显示所述第一静态节点对象和所述至少一个第二静态节点对象。
[0145] 需要说明的是,具体执行过程可以参见图1所示方法实施例的具体说明,在此不进行赘述。
[0146] 本发明实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行如上述图1所示实施例的方法步骤,具体执行过程可以参见图1所示实施例的具体说明,在此不进行赘述。
[0147] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈