CN103257876A - C3游戏地图动态加载的方法 - Google Patents
C3游戏地图动态加载的方法 Download PDFInfo
- Publication number
- CN103257876A CN103257876A CN2013101573063A CN201310157306A CN103257876A CN 103257876 A CN103257876 A CN 103257876A CN 2013101573063 A CN2013101573063 A CN 2013101573063A CN 201310157306 A CN201310157306 A CN 201310157306A CN 103257876 A CN103257876 A CN 103257876A
- Authority
- CN
- China
- Prior art keywords
- map
- data
- node
- landform
- quaternary tree
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Processing Or Creating Images (AREA)
- Instructional Devices (AREA)
Abstract
本发明提供一种C3游戏地图动态加载的方法,该方法为:1、建立Cell对象2、将游戏地图的地形掩码数据以及依附在各地图的基本单位Cell数据上的场景物件数据,沿着基本单位Cell数据的四边平行切割3、切割后得到的子地图区域再继续分割得到区域块,并以四叉树的数据结构存储区域块内所有地形掩码数据和场景物件数据;4、游戏要加载游戏地图数据时,将切割后菱形状的子地图区域的地形掩码数据以及场景物件数据,以区域块加载的方式进行加载5、四叉树的各节点Region对象均加载完后,进行排列分布,在地图的各子地图区域加载完毕后,从而完成游戏地图的加载。本发明降低了内存的使用率,且手机游戏系统加载地图的效率提高,CPU的使用率降低。
Description
技术领域
本发明涉及一种计算机通讯技术领域,尤其涉及一种C3游戏地图动态加载的方法。
背景技术
现有很多手机都支持C3游戏,该C3就是人物(CHARACTER)、文化(CULTURE)和内容(CONTENT)的简称。如图1所示,是C3游戏的地图分布结构。该图1的镜头视线与地面的夹角为30度,且是在DirectX(多媒体编程接口)的坐标系(即图1中的World坐标系)进行绘制的,图中的每个格子的X、Y轴就是C3游戏中3D世界的X、Y轴,Z轴是垂直于地面;图中的Cell(单元格)是组成地图数据的基本单位,即Cell的大小为图中的每一个单独的小菱形1,该小菱形1的对角线长64,高32像素;而3D世界格子是正方形,边长为图中的最大菱形2表示的是地图的地形掩码数据;游戏中的场景物件数据是依附在各Cell上。在World坐标系中X为30,Z为45的视角下,3D世界的正方格在镜头视线中的平面成像即为棱形格,且X方向上的距离值不变,Y方向上缩短为一半;镜头3的宽高的单位也是像素值,因为3D世界单位是像素,所以3D物件的大小单位也是为像素,并对应到场景图。Cell的地图数据的数值是通过地图数据坐标系来体现在World坐标系中的,即图1中的Cell(0,0)是该地图数据坐标系的原点;Cell的地图数据在该地图数据坐标系的X,Y方向上前进1格,相当于在World坐标系的X,Y方向上前进(X)半格,后退(Y)半格。
针对目前的C3游戏,网龙天晴公司研发并长期使用一个游戏引擎,该游戏引擎为C3游戏引擎;C3游戏引擎是一个全平台兼容的游戏引擎。在技术上,C3采用DirectX9/OpenGLES(三维图形)2.0为基础,支持蒙皮骨骼动画,人物角色渲染,阴影渲染,人物武器换装系统,图像帧动画,粒子系统,模型动画,刀光动画,物理碰撞检测等技术。而目前的C3游戏引擎实现图1这种地图加载的方案是将整个游戏地图所需的数据一次性加载,并且每帧对全部物件进行渲染排序;这种地图加载方式对于手机来说,内存使用量较大,CPU占用率高,对手机的续航问题也带来负面的影响。
发明内容
本发明要解决的技术问题,在于提供一种C3游戏地图动态加载的方法,其降低了内存的使用率,且游戏系统加载地图的效率提高。
本发明是这样实现的:一种C3游戏地图动态加载的方法,包括如下步骤:
步骤10、建立Cell对象,该Cell对象用来描述地图基本单位Cell数据的属性;所述基本单位Cell数据在地图中以菱形状保存,其包括在地图上的坐标和地形掩码数据;
步骤20、将游戏地图的地形掩码数据以及依附在各地图的基本单位Cell数据上的场景物件数据,沿着基本单位Cell数据的四边平行切割,并确保分割后每个子地图区域的数据完整性;
步骤30、所述游戏地图的地形掩码数据沿四边平行切割后,得到的子地图区域再继续分割得到区域块,并以四叉树的数据结构存储区域块内所有地形掩码数据和场景物件数据;所述四叉树的节点用Region对象描述;
步骤40、游戏要加载游戏地图数据时,将切割后菱形状的子地图区域的地形掩码数据以及场景物件数据,以区域块加载的方式进行加载,即将四叉树的节点Region对象中区域块内所有地形掩码数据和场景物件数据先进行加载,
步骤50、四叉树的各节点Region对象均加载完后,进行排列分布,从而完成该子地图区域的加载;在地图的各子地图区域的地图的地形掩码数据以及场景物件数据均加载完毕后,从而完成游戏地图的加载。
进一步地,所述四叉树的节点用Region对象描述时;如果当前子地图区域需要继续进行切割,则Region对象将保存四个子节点Region对象的指针;如果当前子地图区域不再切割,则将Region对象作为叶节点。
进一步地,所述四叉树的各节点Region对象均加载完后,进行排列分布,具体为:四叉树的各节点Region对象均加载完后,根据游戏地图原点在World坐标系中的位置、基本单位Cell数据菱形状的宽度与高度、以及四叉树的节点Region对象中区域块内所有地形掩码数据,能获得四叉树的节点Region对象在World坐标系中的位置和大小,根据四叉树的节点Region对象在World坐标系中的位置和大小将四叉树的各节点Region对象进行排列分布。
本发明具有如下优点:1、游戏地图中需要同时加载的数据减少,内存使用降低,同时加载效率提高;2、移动设备的CPU使用降低,提高游戏效率,对于手机等移动设备,减少发热,降低能耗;3、对游戏业务而言,支持超大地图以及地图无缝延伸。
附图说明
图1为现有技术中C3游戏的地图分布结构。
图2为本发明方法流程示意图。
图3为本发明中将子地图区域继续分割成区域块的结构示意图。
具体实施方式
请参阅图2和图3所示,本发明的为一种C3游戏地图动态加载的方法,包括如下步骤:
步骤10、建立Cell对象,该Cell对象用来描述地图基本单位Cell数据的属性;所述基本单位Cell数据在地图中以菱形状保存,其包括在地图上的坐标和地形掩码数据;
步骤20、将游戏地图的地形掩码数据以及依附在各地图的基本单位Cell数据上的场景物件数据,沿着基本单位Cell数据的四边平行切割,并确保分割后每个子地图区域的数据完整性;
步骤30、所述游戏地图的地形掩码数据沿四边平行切割后,得到的子地图区域再继续分割得到区域块,并以四叉树的数据结构存储区域块内所有地形掩码数据和场景物件数据;所述四叉树的节点用Region对象描述;如果当前子地图区域需要继续进行切割,则Region对象将保存四个子节点Region对象的指针;如果当前子地图区域不再切割,则将Region对象作为叶节点;
步骤40、游戏要加载游戏地图数据时,将切割后菱形状的子地图区域的地形掩码数据以及场景物件数据,以区域块加载的方式进行加载,即将四叉树的节点Region对象中区域块内所有地形掩码数据和场景物件数据先进行加载,在区域块加载时,以平行视口(屏幕或者窗口)的区域作为分界,将地图场景物件关联到物件节点上,进行物件渲染排序时,达到大规模减少实际参与排序的物件数量的目的;
步骤50、四叉树的各节点Region对象均加载完后,进行排列分布,从而完成该子地图区域的加载;在地图的各子地图区域的地图的地形掩码数据以及场景物件数据均加载完毕后,从而完成游戏地图的加载。
其中,所述四叉树的各节点Region对象均加载完后,进行排列分布,具体为:四叉树的各节点Region对象均加载完后,根据游戏地图原点在World坐标系中的位置、基本单位Cell数据菱形状的宽度与高度、以及四叉树的节点Region对象中区域块内所有地形掩码数据,能获得四叉树的节点Region对象在World坐标系中的位置和大小,(该四叉树的节点Region对象在World坐标系中的位置和大小即为空间维度数据)根据四叉树的节点Region对象在World坐标系中的位置和大小将四叉树的各节点Region对象进行排列分布。
这里值得一提的是:游戏屏幕通常是矩形,称之为视口(Viewport),为了描述能够看到地图上哪一些内容,视口矩形也存在于World坐标系内,通过将Region对象的空间维度数据与视口的空间维度数据进行比较,可以得出该区域的数据是否需要加载到内存中。
游戏地图中的地图场景物件(例如:房屋、树木、岩石等)通过Cell来定位,也就是说当描述一个地图场景物件的位置属性时,是说它位于某个Cell对象上;因此,我们在对一个Region对象中所有Cell对象进行加载的同时,也需要加载所有和Cell存在依赖关系的地图场景物件。在实际应用中,地图场景物件之间往往会存在遮挡关系,因此,需要按照它们之间的空间维度关系进行排序,决定绘制地图场景物件的先后顺序。地图上存在大量地图场景物件,所有物件同时参与排序会带来很大的运算消耗,当我们将整个地图切割成多个Region之后,只需要对归属于同一个Region的地图场景物件进行排序,减少消耗。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
Claims (3)
1.一种C3游戏地图动态加载的方法,其特征在于:包括如下步骤:
步骤10、建立Cell对象,该Cell对象用来描述地图基本单位Cell数据的属性;所述基本单位Cell数据在地图中以菱形状保存,其包括在地图上的坐标和地形掩码数据;
步骤20、将游戏地图的地形掩码数据以及依附在各地图的基本单位Cell数据上的场景物件数据,沿着基本单位Cell数据的四边平行切割,并确保分割后每个子地图区域的数据完整性;
步骤30、所述游戏地图的地形掩码数据沿四边平行切割后,得到的子地图区域再继续分割得到区域块,并以四叉树的数据结构存储区域块内所有地形掩码数据和场景物件数据;所述四叉树的节点用Region对象描述;
步骤40、游戏要加载游戏地图数据时,将切割后菱形状的子地图区域的地形掩码数据以及场景物件数据,以区域块加载的方式进行加载,即将四叉树的节点Region对象中区域块内所有地形掩码数据和场景物件数据先进行加载,
步骤50、四叉树的各节点Region对象均加载完后,进行排列分布,从而完成该子地图区域的加载;在地图的各子地图区域的地图的地形掩码数据以及场景物件数据均加载完毕后,从而完成游戏地图的加载。
2.根据权利要求1所述的C3游戏地图动态加载的方法,其特征在于:所述四叉树的节点用Region对象描述时;如果当前子地图区域需要继续进行切割,则Region对象将保存四个子节点Region对象的指针;如果当前子地图区域不再切割,则将Region对象作为叶节点。
3.根据权利要求1所述的C3游戏地图动态加载的方法,其特征在于:所述四叉树的各节点Region对象均加载完后,进行排列分布,具体为:四叉树的各节点Region对象均加载完后,根据游戏地图原点在World坐标系中的位置、基本单位Cell数据菱形状的宽度与高度、以及四叉树的节点Region对象中区域块内所有地形掩码数据,能获得四叉树的节点Region对象在World坐标系中的位置和大小,根据四叉树的节点Region对象在World坐标系中的位置和大小将四叉树的各节点Region对象进行排列分布。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310157306.3A CN103257876B (zh) | 2013-04-28 | 2013-04-28 | C3游戏地图动态加载的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310157306.3A CN103257876B (zh) | 2013-04-28 | 2013-04-28 | C3游戏地图动态加载的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103257876A true CN103257876A (zh) | 2013-08-21 |
CN103257876B CN103257876B (zh) | 2016-04-13 |
Family
ID=48961811
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310157306.3A Active CN103257876B (zh) | 2013-04-28 | 2013-04-28 | C3游戏地图动态加载的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103257876B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106547599A (zh) * | 2016-11-24 | 2017-03-29 | 腾讯科技(深圳)有限公司 | 一种资源动态加载的方法及终端 |
CN110580273A (zh) * | 2019-09-11 | 2019-12-17 | 四川易利数字城市科技有限公司 | 地图gis数据处理存储方法、装置、可读存储介质 |
CN112774182A (zh) * | 2019-11-06 | 2021-05-11 | 阿里巴巴集团控股有限公司 | 角色所处区域的确定方法及装置、电子设备和存储介质 |
CN113318444A (zh) * | 2021-06-08 | 2021-08-31 | 天津亚克互动科技有限公司 | 角色的渲染方法和装置、电子设备和存储介质 |
US11167207B2 (en) | 2019-12-13 | 2021-11-09 | Niantic, Inc. | Region division with cell merging using spanning tree |
CN116650943A (zh) * | 2023-06-08 | 2023-08-29 | 广州三七极梦网络技术有限公司 | 一种游戏资源处理方法、装置、设备及介质 |
CN110478901B (zh) * | 2019-08-19 | 2023-09-22 | Oppo广东移动通信有限公司 | 基于增强现实设备的交互方法及系统 |
-
2013
- 2013-04-28 CN CN201310157306.3A patent/CN103257876B/zh active Active
Non-Patent Citations (5)
Title |
---|
刘海砚 等: "电子地图中应用DirectX技术初探", 《测绘学院学报》 * |
王珂珂 等: "基于DirectX的多分辨率动态DEM构网算法研究", 《北京测绘》 * |
王荣涛 等: "一种基于DX9的大规模地形渲染算法的研究", 《杭州电子科技大学学报》 * |
王长顺: "网络游戏引擎若干关键技术的研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
童晓然 等: "用directX实现地图3D展示及模拟行走", 《科技广场》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106547599A (zh) * | 2016-11-24 | 2017-03-29 | 腾讯科技(深圳)有限公司 | 一种资源动态加载的方法及终端 |
CN110478901B (zh) * | 2019-08-19 | 2023-09-22 | Oppo广东移动通信有限公司 | 基于增强现实设备的交互方法及系统 |
CN110580273A (zh) * | 2019-09-11 | 2019-12-17 | 四川易利数字城市科技有限公司 | 地图gis数据处理存储方法、装置、可读存储介质 |
CN112774182A (zh) * | 2019-11-06 | 2021-05-11 | 阿里巴巴集团控股有限公司 | 角色所处区域的确定方法及装置、电子设备和存储介质 |
US11167207B2 (en) | 2019-12-13 | 2021-11-09 | Niantic, Inc. | Region division with cell merging using spanning tree |
TWI776313B (zh) * | 2019-12-13 | 2022-09-01 | 美商尼安蒂克公司 | 用於將一地理區域分割成區域之電腦實施方法及相關之非暫時性電腦可讀儲存媒體 |
US11731038B2 (en) | 2019-12-13 | 2023-08-22 | Niantic, Inc. | Region division with cell merging using spanning tree |
CN113318444A (zh) * | 2021-06-08 | 2021-08-31 | 天津亚克互动科技有限公司 | 角色的渲染方法和装置、电子设备和存储介质 |
CN116650943A (zh) * | 2023-06-08 | 2023-08-29 | 广州三七极梦网络技术有限公司 | 一种游戏资源处理方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103257876B (zh) | 2016-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103257876A (zh) | C3游戏地图动态加载的方法 | |
CN109701273B (zh) | 游戏数据的处理方法、装置、电子设备及可读存储介质 | |
CN102663801B (zh) | 一种提高三维模型渲染性能的方法 | |
CN106446351A (zh) | 一种面向实时绘制的大规模场景组织与调度技术及仿真系统 | |
CN101261743B (zh) | 一种基于规则网格的大规模地形漫游模拟方法 | |
CN104239431B (zh) | 三维gis模型显示方法及装置 | |
CN106156138B (zh) | 兴趣点的空间索引的建立、周边搜索方法和装置 | |
CN103049554B (zh) | 一种矢量qr树并行索引方法 | |
CN102117500A (zh) | 一种三维模型构建方法及系统 | |
CN102117494A (zh) | 一种三维建模中的数据分层分块方法及装置 | |
CN109492060A (zh) | 一种基于MBTiles的地图瓦片存储方法 | |
CN107291223A (zh) | 一种超大数据量虚拟现实空间信息可视化系统及方法 | |
CN101702245A (zh) | 一种可扩展通用三维地景仿真系统 | |
CN107895031A (zh) | 建筑信息模型在三维数字城市场景中自适应动态调度方法 | |
CN103345507A (zh) | 一种基于碰撞盒原理动态加载三维地图的方法 | |
CN103914877A (zh) | 一种基于扩展合并的三维模型多细节层次结构 | |
CN102306106A (zh) | 虚拟空间导航图自动生成方法与系统及其寻路方法与系统 | |
CN106373175A (zh) | 一种地形高度图数据的加载方法 | |
CN113590706A (zh) | 一种基于cim的可视化平台 | |
CN110287508A (zh) | 一种多源三维城市模型的可视化融合系统 | |
CN103106254B (zh) | 多边形矢量数据文件的并行拼接方法 | |
CN115408382B (zh) | 面向大规模卫星数据的矢量空间信息网格化存储管理方法 | |
Qiao et al. | A rapid visualization method of vector data over 3D terrain | |
CN102117288A (zh) | 一种三维建模中搜索建模数据的方法及装置 | |
CN105512312A (zh) | 一种二维地图库加速的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |