CN114225385A - 数据处理方法、装置、设备及存储介质 - Google Patents
数据处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114225385A CN114225385A CN202210177617.5A CN202210177617A CN114225385A CN 114225385 A CN114225385 A CN 114225385A CN 202210177617 A CN202210177617 A CN 202210177617A CN 114225385 A CN114225385 A CN 114225385A
- Authority
- CN
- China
- Prior art keywords
- map
- data
- memory space
- grid
- map grid
- 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
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/50—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
- A63F2300/53—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
- A63F2300/531—Server assignment
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/50—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
- A63F2300/55—Details of game data or player data management
- A63F2300/5526—Game data structure
- A63F2300/554—Game data structure by saving game or status data
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请提供了一种数据处理方法、装置、设备、计算机可读存储介质及计算机程序产品;涉及云领域的游戏技术;方法包括:将虚拟场景中至少一个地图分别对应的静态地图数据加载到第一内存空间;在第一内存空间中构建与每个地图关联的静态索引数据;响应于第一场景实例更新所运行的第一地图中的第一地图网格,将更新后的第一地图网格对应的地图网格数据加载到第二内存空间中对应第一场景实例的子空间;基于第一地图网格在第二内存空间中的存储位置,构建或更新第二内存空间中与第一场景实例关联的动态索引数据,其中,动态索引数据的优先级高于静态索引数据。通过本申请,能够在有效提高服务器的虚拟场景承载能力的同时,减少服务器中的数据冗余。
Description
技术领域
本申请涉及云技术领域,尤其涉及一种数据处理方法、装置、设备及计算机可读存储介质。
背景技术
随着游戏技术的发展,服务器需要在同一时间为大量的游戏客户端提供地图数据服务,而在不同的游戏客户端中,对于地图网格数据的需求是不同的。
在相关技术中,服务器会为每个游戏客户端单独开辟存储空间,存储空间用于存储一个游戏客户端所独有的地图网格数据,这样,导致服务器的数据承载压力陡增,而且会导致服务器中的数据冗余较大。
对于如何在有效提高服务器的虚拟场景承载能力的同时,减少服务器中的数据冗余,相关技术尚无有效解决方案。
发明内容
本申请实施例提供一种数据处理方法、装置、计算机可读存储介质及计算机程序产品,能够在有效提高服务器的虚拟场景承载能力的同时,减少服务器中的数据冗余。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种数据处理方法,包括:
将虚拟场景中至少一个地图分别对应的静态地图数据加载到第一内存空间,其中,每个所述地图的静态地图数据包括所述地图中多个地图网格分别对应的地图网格数据;
在所述第一内存空间中构建与每个所述地图关联的静态索引数据,其中,所述静态索引数据包括所述地图中多个地图网格分别在所述第一内存空间中的存储位置,且所述静态索引数据用于响应运行所述地图的任意场景实例的地图数据请求;
响应于第一场景实例更新所运行的第一地图中的第一地图网格,将更新后的所述第一地图网格对应的地图网格数据加载到第二内存空间中对应所述第一场景实例的子空间,其中,不同的所述场景实例在所述第二内存空间中对应不同的子空间,以及基于所述第一地图网格在所述第二内存空间中的存储位置,构建或更新所述第二内存空间中与所述第一场景实例关联的动态索引数据,其中,所述动态索引数据的优先级高于所述静态索引数据。
本申请实施例提供一种数据处理装置,包括:
虚拟场景服务模块,用于将虚拟场景中至少一个地图分别对应的静态地图数据加载到第一内存空间,其中,每个所述地图的静态地图数据包括所述地图中多个地图网格分别对应的地图网格数据;
存储服务模块,用于在所述第一内存空间中构建与每个所述地图关联的静态索引数据,其中,所述静态索引数据包括所述地图中多个地图网格分别在所述第一内存空间中的存储位置,且所述静态索引数据用于响应运行所述地图的任意场景实例的地图数据请求;
所述虚拟场景服务模块,还用于响应于第一场景实例更新所运行的第一地图中的第一地图网格,将更新后的所述第一地图网格对应的地图网格数据加载到第二内存空间中对应所述第一场景实例的子空间,其中,不同的所述场景实例在所述第二内存空间中对应不同的子空间;
所述存储服务模块,还用于基于所述第一地图网格在所述第二内存空间中的存储位置,构建或更新所述第二内存空间中与所述第一场景实例关联的动态索引数据,其中,所述动态索引数据的优先级高于所述静态索引数据。
本申请实施例提供一种电子设备,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的数据处理方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现本申请实施例提供的数据处理方法。
本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的数据处理方法。
本申请实施例具有以下有益效果:
通过将服务器中的内存空间划分为第一内存空间和第二内存空间,将静态地图数据加载至第一内存空间,将动态地图数据加载至第二内存空间,从而实现了对地图数据的动静态分层存储,从而为不同的游戏客户端存储相同的静态地图数据,为不同的游戏客户端存储各自差异化的动态地图数据,从而有效节省了服务器的内存消耗,能够在有效提高服务器的虚拟场景承载能力的同时,减少服务器中的数据冗余。
附图说明
图1是本申请实施例提供的数据处理系统100的架构示意图;
图2是本申请实施例提供的数据处理方法的服务器200的一种结构示意图;
图3A是本申请实施例提供的数据处理方法步骤101-104具体实现的流程示意图;
图3B是本申请实施例提供的数据处理方法步骤101和步骤104具体实现的流程示意图;
图3C是本申请实施例提供的数据处理方法步骤102和步骤103具体实现的流程示意图;
图3D是本申请实施例提供的数据处理方法步骤105-109具体实现的交互流程示意图;
图3E是本申请实施例提供的数据处理方法步骤102-104具体实现的流程示意图;
图3F是本申请实施例提供的数据处理方法步骤110-114具体实现的流程示意图;
图3G是本申请实施例提供的数据处理方法步骤115-118具体实现的流程示意图;
图3H是本申请实施例提供的数据处理方法步骤201-208具体实现的流程示意图;
图3I是本申请实施例提供的数据处理方法步骤209-217具体实现的流程示意图;
图4A是本申请实施例提供的数据处理方法的内存空间的原理示意图;
图4B是本申请实施例提供的数据处理方法的静态资源文件的结构示意图;
图5A是本申请实施例提供的数据处理方法的子图51的效果示意图;
图5B是本申请实施例提供的数据处理方法的子图52的效果示意图;
图5C是本申请实施例提供的数据处理方法步骤501-505具体实现的流程示意图;
图5D是本申请实施例提供的数据处理方法的文件结构示意图;
图5E是本申请实施例提供的数据处理方法的数据层的结构示意图;
图5F是本申请实施例提供的数据处理方法步骤510-步骤523具体实现的流程示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)虚拟场景:是游戏程序在终端设备上运行时显示(或提供)的场景。场景可以是对真实世界的仿真环境,也可以是半仿真半虚构的环境,还可以是纯虚构的虚拟环境。虚拟场景可以是二维虚拟场景、2.5维虚拟场景或者三维虚拟场景中的任意一种,本申请实施例对虚拟场景的维度不加以限定。例如,虚拟场景可以包括天空、陆地、海洋等,该陆地可以包括沙漠、城市等环境元素,用户可以控制虚拟对象在该虚拟场景中进行移动。
2)地图网格:在终端设备的内存中加载虚拟场景的地图的基本单位,将虚拟场景的地图以网格划分为多个地地图网格,根据玩家当前控制的虚拟对象的位置,加载所处的地地图网格(还可以包括周围的地地图网格)并渲染到人机交互界面,从而不必加载整个虚拟场景以节约内存。例如,地图网格可以是导航网格(Navigation Mesh),导航网格是一种用于在复杂空间中导航寻路、标记哪些地方可行走的多边形网格数据结构。
3)场景实例:服务器中处于运行状态的游戏程序,负责游戏交互逻辑。例如,根据游戏客户端发送的指令渲染地图的运行时状态(即,地图在游戏的运行过程中不断发生变化的状态),在服务器中,同一地图可以分配多个场景实例,这些场景实例共享静态地图资源,但是拥有各自的运行时状态和数据。
4)地图块(Tile):按照固定的长、宽,将整个三维地图场景划分成若干长方体空间,每个长方体空间为一个地图块。
5)静态地图数据:不同的游戏客户端所共用的地图数据,静态地图数据可以为不同的游戏客户端所共享。
6)动态地图数据:不同的游戏客户端各自不同的地图数据,动态地图数据可以为每个游戏客户端所独享。
7)响应于:用于表示所执行的操作所依赖的条件或者状态,当满足所依赖的条件或状态时,所执行的一个或多个操作可以是实时的,也可以具有设定的延迟;在没有特别说明的情况下,所执行的多个操作不存在执行先后顺序的限制。
8)云游戏:是以云计算为基础的游戏方式,在云游戏的运行模式下,所有游戏都在服务器端运行,并将渲染完毕后的游戏画面进行压缩后,通过网络传送给用户。在客户端,用户的游戏设备不需要任何高端处理器和显卡,只需要基本的视频解压能力就可以了。
在本申请实施例的实施过程中,申请人发现相关技术存在以下问题:
在相关技术中,由于每个游戏客户端只用关心玩家自己所处的场景实例即可,那么每个游戏客户端中所运行的场景实例会分别独自管理,而服务器会同一时间为不同的场景实例提供服务,服务器会为每个游戏客户端单独开辟存储空间,用于存储一个游戏客户端所独有的地图网格数据,这样,导致服务器的数据承载压力陡增,而且会导致服务器中的数据冗余较大,服务器机器成本陡增。
在相关技术中,将地图网格数据作为静态资源共享的方式可以解决服务器承载的问题,但不同的场景实例在运行时状态和数据是各异的。例如,场景实例A和场景实例B是由相同的地图资源分配创建出来的,场景实例A中的玩家在河上造了一座桥,由于桥是可行走的,故场景实例A的地图网格需要更新,而此时场景实例B中没有这座桥,河依然过不去,场景实例A和场景实例B共享一份地图网格数据就没办法实现场景实例A可以通过桥来过河,场景实例B不能过河这一需求。同理,地形地貌的改变,建筑物的生成都会影响场景实例需要重新生成地图网格数据,将地图网格数据作为静态资源进行共享的方式无法满足上述需求。
本申请实施例提供一种数据处理方法、装置、电子设备、计算机可读存储介质和计算机程序产品,能够在有效提高服务器的虚拟场景承载能力的同时,减少服务器中的数据冗余,下面说明本申请实施例提供的电子设备的示例性应用,本申请实施例提供的电子设备可以实施为笔记本电脑,平板电脑,台式计算机,机顶盒,移动设备(例如,移动电话,便携式音乐播放器,个人数字助理,专用消息设备,便携式游戏设备)等各种类型的用户终端,也可以实施为服务器。
参见图1,图1是本申请实施例提供的数据处理系统100的架构示意图,为实现处理网络游戏的应用场景(例如,多个终端从网络服务器获取游戏地图数据),终端(示例性示出了终端400-1、终端400-2和终端400-3)通过网络300连接服务器200,网络300可以是广域网或者局域网,又或者是二者的组合。
终端400-1运行网络游戏客户端410-1,终端400-2运行网络游戏客户端410-2、终端400-3运行网络游戏客户端410-3,终端400-1、终端400-2、终端400-3和服务器200通过有线或者无线网络相互连接。
在一些实施例中,服务器200可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端400-1、终端400-2、终端400-3可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、车载终端等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例中不做限制。
在一些实施例中,服务器200接收终端400-1发送的更新后的地图网格数据,将更新后的地图网格数据加载到第二内存空间,服务器200接收终端400-2和终端400-3发送的数据请求,服务器200将地图网格数据发送至终端400-2和终端400-3中进行渲染。
在另一些实施例中,服务器200接收终端400-1发送的数据请求,将第一内存空间中的静态地图数据发送至终端400-1。服务器200响应于终端400-1的第一场景实例更新所运行的地图中的地图网格,将更新后的第一地图网格对应的地图网格数据加载到第二内存空间,服务器200接收终端400-1针对更新后的第一地图网格的数据请求,将第二内存空间中的第一地图网格对应的地图网格数据发送至终端400-1。
参见图2,图2是本申请实施例提供的数据处理方法的服务器200的一种结构示意图,图2所示的服务器200包括:至少一个处理器210、存储器250、至少一个网络接口220。服务器200中的各个组件通过总线系统240耦合在一起。可理解,总线系统240用于实现这些组件之间的连接通信。总线系统240除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统240。
处理器210可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
存储器250可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器250可选地包括在物理位置上远离处理器210的一个或多个存储设备。
存储器250包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器250旨在包括任意适合类型的存储器。
在一些实施例中,存储器250能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统251,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。
网络通信模块252,用于经由一个或多个(有线或无线)网络接口220到达其他电子设备,示例性的网络接口220包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等。
在一些实施例中,本申请实施例提供的数据处理装置可以采用软件方式实现,图2示出了存储在存储器250中的数据处理装置255,其可以是程序和插件等形式的软件,包括以下软件模块:虚拟场景服务模块2551、存储服务模块2552,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
将结合本申请实施例提供的服务器或终端的示例性应用和实施,说明本申请实施例提供的数据处理方法。
参见图3A,图3A是本申请实施例提供的数据处理方法步骤101-104具体实现的流程示意图,将结合图3A示出的步骤101至步骤104进行说明,步骤101至步骤104的执行主体可以是前述的服务器。
在步骤101中,服务器将虚拟场景中至少一个地图分别对应的静态地图数据加载到第一内存空间。
其中,每个地图的静态地图数据包括地图中多个地图网格分别对应的地图网格数据。
在一些实施例中,上述服务器可以包括虚拟场景服务器和存储服务器,其中,虚拟场景服务器用于运行虚拟场景服务进程、提供预导出服务;存储服务器用于提供加载地图网格数据的内存空间。或者,由存储服务器和虚拟场景服务器共同提供加载地图网格数据的内存空间,由存储服务器提供加载地图网格数据的第一内存空间,由虚拟场景服务器提供加载地图网格数据的第二内存空间。
上述步骤101可以由服务器中的虚拟场景服务器将虚拟场景中至少一个地图对应的静态地图数据加载到第一内存空间。
在一些实施例中,虚拟场景包括至少一个地图,每个地图分别对应各自专属的静态地图数据。每个地图包括多个地图网格。第一内存空间是指服务器中用于存储静态地图数据的存储空间,其中,第一内存空间可以是由服务器中的存储服务器提供。静态地图数据可以被多个不同的客户端所运行的场景实例所共享。
作为示例,参见图4A,图4A是本申请实施例提供的数据处理方法的内存空间的原理示意图。服务器将虚拟场景中至少一个地图分别对应的静态地图数据加载到第一内存空间。
在一些实施例中,上述步骤101可以通过以下方式实现:将虚拟场景中每个地图中多个地图网格分别对应的地图网格数据加载到第一内存空间。
在一些实施例中,参见图3B,图3B是本申请实施例提供的数据处理方法步骤101和步骤104具体实现的流程示意图。图3B示出的步骤101可以通过步骤1011至步骤1012实现,下面分别进行说明。
在步骤1011中,虚拟场景服务器初始化虚拟场景服务,其中,虚拟场景服务包括虚拟场景的至少一个地图分别对应的静态地图数据。
在一些实施例中,虚拟场景服务器用于运行虚拟场景服务进程,虚拟场景服务器通过初始化虚拟场景服务,从而运行虚拟场景服务进程。
在步骤1012中,通过虚拟场景服务从数据库获取至少一个地图分别对应的静态地图数据,并加载到第一内存空间中。
其中,至少一个地图分别对应的静态地图数据是在离线阶段从静态资源文件中读取并导出到数据库的,离线阶段是虚拟场景服务启动前的阶段。
作为示例,在虚拟场景服务启动之前,即初始化虚拟场景服务之前,通过从静态资源文件中读取静态地图数据,将读取到的静态地图数据从静态资源文件中导出,并导入至数据库中。
作为示例,在虚拟场景服务器初始化虚拟场景服务之后,通过虚拟场景服务从数据库中直接获取静态地图数据,并将静态地图数据加载到存储服务器的第一内存空间中。
在一些实施例中,还可以通过以下方式将静态地图数据从静态资源文件中读取并导出:遍历新发布版本的虚拟场景中的每个地图;针对新发布版本的虚拟场景中的每个地图并行执行以下处理:基于地图中多个地图网格分别对应的地图网格数据,构建静态资源文件,其中,静态资源文件中包括每个地图网格对应的地图网格数据的基本信息,基本信息包括地图网格数据的长度和地图网格数据;从静态资源文件中导出静态地图数据至数据库中。
作为示例,新发布版本的虚拟场景中有5个地图,遍历新发布版本的虚拟场景中的5个地图,针对这5个地图,以并行的方式进行处理,如此,可以有效减少读取导出时间。
作为示例,参见图4B,图4B是本申请实施例提供的数据处理方法的静态资源文件的结构示意图,针对这5个地图中的任意一个地图,地图中有M个地图网格,M为大于或等于2的正整数,如图4B所示出的静态资源文件的结构,对于一个地图中的M个地图网格,每个地图网格对应有长度、概要、和对应的地图网格数据。基于地图中M个地图网格分别对应的地图网格数据,即地图网格1对应的地图网格1的地图网格数据、地图网格2对应的地图网格2的地图网格数据、地图网格M对应的地图网格M的地图网格数据等,构建静态资源文件。由于每个地图的静态地图数据包括地图中多个地图网格分别对应的地图网格数据,如此,通过从静态资源文件中导出多个地图网格分别对应的地图网格数据,从而从静态资源文件中导出静态地图数据,并将导出的静态地图数据导入至数据库中。
如此,通过针对新发布版本的虚拟场景中的每个地图进行并行处理,从而有效节省了从静态资源文件中读取并导出静态地图数据的时间。
在步骤102中,服务器在第一内存空间中构建与每个地图关联的静态索引数据。
其中,静态索引数据包括地图中多个地图网格分别在第一内存空间中的存储位置,且静态索引数据用于响应运行地图的任意场景实例的地图数据请求。
作为示例,参见图4A,在第一内存空间中构建与每个地图关联的静态索引数据。如此,当任意客户端中运行地图的任意场景实例请求地图数据时,通过静态索引数据响应运行地图的任意场景实例的地图数据请求,从第一内存空间的相应存储位置处,读取静态地图数据。
在一些实施例中,参见图3C,图3C是本申请实施例提供的数据处理方法步骤102和步骤103具体实现的流程示意图。图3C示出的步骤102可以通过针对任意一个地图执行步骤1021至步骤1023实现,下面分别进行说明。
在步骤1021中,服务器获取地图的每个地图网格分别对应的地图网格数据在第一内存空间中的存储位置。
作为示例,参见图4A,服务器获取任意一个地图的地图网格41、地图网格42、地图网格43、地图网格44、地图网格45、地图网格46分别对应的地图网格数据在第一内存空间中的存储位置。
在步骤1022中,构建每个地图网格的索引条目。
其中,地图网格的索引条目包括地图网格的标识和地图网格对应的地图网格数据在第一内存空间中的存储位置之间的关联关系。
作为示例,参见图4A,构建地图网格41至地图网格46分别对应的索引条目,以地图网格41为例,基于地图网格41的标识和地图网格41对应的地图网格数据在第一内存空间中的存储位置,构建地图网格41的索引条目。
在步骤1023中,将地图的每个地图网格的索引条目组合为静态索引数据,并加载到第一内存空间中。
作为示例,参见图4A,将地图网格41至地图网格46分别对应的索引条目组合为静态索引数据,并将静态索引数据加载到第一内存空间中。
如此,通过构建静态索引数据,从而利用静态索引数据响应运行地图的任意场景实例的地图数据请求,便于任意场景实例从第一内存空间中获取静态地图数据。
在步骤103中,响应于第一场景实例更新所运行的第一地图中的第一地图网格,将更新后的第一地图网格对应的地图网格数据加载到第二内存空间中对应第一场景实例的子空间。
其中,不同的场景实例在第二内存空间中对应不同的子空间。
作为示例,参见图4A,虚拟场景服务器响应于第一场景实例更新所运行的第一地图中的第一地图网格47,将更新后的第一地图网格47对应的地图网格数据加载到第二内存空间中对应第一场景实例的子空间。第一场景实例、第二场景实例、第三场景实例在第二内存空间中对应不同的子空间。
在一些实施例中,第一场景实例更新所运行的第一地图中的第一地图网格可以分为第一次更新所运行的第一地图中的第一地图网格和第N次更新所运行的第一地图中的第一地图网格,下面针对这两种情况分别进行说明。
在一些实施例中,参见图3C,图3C是本申请实施例提供的数据处理方法步骤102和步骤103具体实现的流程示意图。图3C示出的步骤103可以通过针对任意一个地图执行步骤1031至步骤1032实现,下面分别进行说明。
在步骤1031中,接收第一场景实例发送的第一次更新数据。
其中,第一次更新数据是第一场景实例在第一次更新所运行的第一地图中的第一地图网格后发送的,且第一次更新数据是第一次更新后的第一地图网格对应的地图网格数据。
作为示例,参见图4A,服务器接收运行第一场景实例的客户端发送的第一次更新数据。
在步骤1032中,将第一次更新数据加载到第二内存空间中对应第一场景实例的子空间。
作为示例,参见图4A,服务器将第一次更新数据加载到第二内存空间中对应第一场景实例的子空间5中。
在一些实施例中,参见图3E,图3E是本申请实施例提供的数据处理方法步骤102-104具体实现的流程示意图。图3E示出的步骤103可以通过执行步骤1033至步骤1034实现,下面分别进行说明。
在步骤1033中,接收第一场景实例发送的第N次更新数据。
其中,N为大于或等于2的整数,第N次更新数据是第一场景实例在第N次更新所运行的第一地图中的第一地图网格后发送的,且第N次更新数据是第N次更新后的第一地图网格对应的地图网格数据。
作为示例,参见图4A,服务器接收运行第一场景实例的客户端发送的第2次更新数据。第2次更新数据是第一场景实例在第2次更新所运行的第一地图中的第一地图网格后发送的,且第2次更新数据是第2次更新后的第一地图网格对应的地图网格数据。
在步骤1034中,将第二内存空间中对应第一场景实例的子空间中的第N-1次更新数据删除,并将第N次更新数据加载到第二内存空间中对应第一场景实例的子空间。
作为示例,参见图4A,将第二内存空间中对应第一场景实例的子空间中的第1次更新数据删除,并将第2次更新数据加载到第二内存空间中对应第一场景实例的子空间5中。
如此,在第一场景实例在第N次更新所运行的第一地图中的第一地图网格时,通过将第二内存空间中对应第一场景实例的子空间中的第N-1次更新数据删除,再将第N次更新数据加载到第二内存空间中对应第一场景实例的子空间中,从而在不断更新的过程中,保证第二内存空间中对应第一场景实例的子空间中始终存储最新的更新数据,有效避免了第二内存空间中的数据冗余。
在一些实施例中,在步骤103之前可以通过以下方式实现第一场景实例的创建:响应于客户端启动虚拟场景中的第一地图,针对第一地图创建对应的第一场景实例,其中,第一地图是至少一个地图中的任意一个地图,第一场景实例用于响应不同的客户端针对第一地图的地图数据请求。
作为示例,服务器响应于客户端启动虚拟场景中的至少一个地图中的任意一个地图,针对任意一个地图创建对应的第一场景实例。
在一些实施例中,参见图3D,图3D是本申请实施例提供的数据处理方法步骤105-109具体实现的交互流程示意图。在上述步骤103之前,服务器可以通过步骤105至步骤109实现向客户端发送待显示地图网格对应的地图网格数据,下面分别进行说明。
在步骤105中,服务器接收显示虚拟场景的第一地图的客户端发送的第一地图数据请求。
其中,第一地图数据请求中携带有第一地图中待显示地图网格的标识,待显示地图网格的标识包括未被更新的第一地图网格的标识或第二地图网格的标识。
在一些实施例中,服务器可以对接收到的第一地图数据请求进行解析,得到第一地图中待显示地图网格的标识。
在步骤106中,服务器响应于第一地图数据请求,通过第一场景实例执行步骤107至步骤109。
在步骤107中,基于第一地图中待显示地图网格的标识,在第一内存空间中的静态索引数据中,查询与待显示地图网格的标识关联的存储位置。
在一些实施例中,第一内存空间中的静态索引数据包括表征地图网格的标识和地图网格的存储位置之间的映射关系的索引条目,基于第一地图中待显示地图网格的标识,在第一内存空间中的静态索引数据中,查询与待显示地图网格的标识关联的索引条目,将索引条目中的存储位置,确定为与待显示地图网格的标识关联的存储位置。
在步骤108中,根据与待显示的地图网格的标识关联的存储位置,从第一内存空间中获取待显示的地图网格对应的地图网格数据。
作为示例,参见图4A,当待显示的地图网格为地图网格44时,根据地图网格44的存储位置,从第一内存空间中获取地图网格44对应的地图网格数据。
在步骤109中,向客户端发送待显示地图网格对应的地图网格数据。
如此,服务器根据显示虚拟场景的第一地图的客户端发送的第一地图数据请求,在第一内存空间的静态索引数据中,查询与待显示地图网格的标识关联的存储位置,从而根据存储位置获取对应的地图网格数据,并将地图网格数据发送至客户端,从而,通过静态索引数据实现了对存储位置的精准查询。
在一些实施例中,在步骤103之前可以通过以下方式实现为每个地图网格分配一一对应的子空间:当第一场景实例第一次更新所运行的第一地图中的第一地图网格时,针对第一场景实例更新所运行的第一地图中的每个地图网格,在第二内存空间中分配一一对应的子空间,其中,不同的地图网格对应不同的子空间,或者,当创建第一场景实例时,针对第一场景实例所运行的第一地图中的每个地图网格,在第二内存空间中分配一一对应的子空间。
作为示例,参见图4A,针对第一场景实例所运行的第一地图中的每个地图网格,在第二内存空间中分配一一对应的子空间的时机可以是:在创建第一场景实例时,或者在第一场景实例第一次更新所运行的第一地图中的第一地图网格时。
在步骤104中,基于第一地图网格在第二内存空间中的存储位置,构建或更新第二内存空间中与第一场景实例关联的动态索引数据。
其中,动态索引数据的优先级高于静态索引数据。
作为示例,参见图4A,基于第一地图网格47在第二内存空间中的存储位置,构建或更新第二内存空间中与第一场景实例关联的动态索引数据50。
在一些实施例中,参见图3B,图3B是本申请实施例提供的数据处理方法步骤101和步骤104具体实现的流程示意图。图3B示出的步骤104可以通过执行步骤1041至步骤1043实现构建动态索引数据,下面分别进行说明。
在步骤1041中,服务器获取第一地图网格对应的地图网格数据在第二内存空间中的存储位置。
作为示例,参见图4A,服务器获取第一地图网格47对应的地图网格数据在第二内存空间中的存储位置。
在步骤1042中,构建第一地图网格的索引条目。
其中,第一地图网格的索引条目包括第一地图网格对应的地图网格数据在第二内存空间中的存储位置、第一地图网格的标识、以及第一场景实例的标识之间的关联关系。
作为示例,基于第一地图网格对应的地图网格数据在第二内存空间中的存储位置、第一地图网格的标识、以及第一场景实例的标识构建第一地图网格的索引条目。
在步骤1043中,将第一地图网格的索引条目作为动态索引数据加载到第二内存空间中。
作为示例,参见图4A,将第一地图网格的索引条目作为动态索引数据50加载到第二内存空间中。
在一些实施例中,参见图3E,是本申请实施例提供的数据处理方法步骤102-104具体实现的流程示意图。图3E示出的步骤104可以通过执行步骤1044至步骤1045实现更新动态索引数据,下面分别进行说明。
在步骤1044中,确定第N次更新数据在第二内存空间中的存储位置。
在步骤1045中,从第二内存空间中与第一场景实例关联的动态索引数据中,查找第N-1次更新的第一地图网格的索引条目,并执行以下处理:将第N-1次更新的第一地图网格的索引条目中的存储位置替换为,第N次更新数据在第二内存空间中的存储位置,得到第N次更新的索引条目。
其中,第N次更新的索引条目包括第N次更新数据在第二内存空间中的存储位置、第一地图网格的标识、以及第一场景实例的标识之间的关联关系。
作为示例,由于第N-1次更新的第一地图网格的索引条目包括第N-1次更新数据在第二内存空间中的存储位置、第一地图网格的标识、以及第一场景实例的标识之间的关联关系,通过将第N-1次更新的第一地图网格的索引条目中的存储位置替换为,第N次更新数据在第二内存空间中的存储位置,第N-1次更新的第一地图网格的索引条目中的第一地图网格的标识、以及第一场景实例的标识保持不变,得到第N次更新的索引条目,那么第N次更新的索引条目包括第N次更新数据在第二内存空间中的存储位置、第一地图网格的标识、以及第一场景实例的标识之间的关联关系。从而实现了第二内存空间中与第一场景实例关联的动态索引数据的更新。
在一些实施例中,参见图3F,图3F是本申请实施例提供的数据处理方法步骤110-114具体实现的流程示意图。在上述步骤104之前,服务器可以通过步骤110至步骤114实现向客户端发送待显示地图网格对应的地图网格数据,下面分别进行说明。
在步骤110中,接收客户端针对第二地图网格的第二地图数据请求。
其中,第二地图数据请求中携带有第二地图网格的标识和第一场景实例的标识。
在步骤111中,第一场景实例在动态索引数据中查询包括第二地图网格的标识和第一场景实例的标识的第一索引条目。
在一些实施例中,参见图4A,动态索引数据50包括表征地图网格的标识、场景实例的标识以及地图网格数据在第二内存空间中的存储位置之间关联关系的多个索引条目。
作为示例,参见图4A,第一场景实例在动态索引数据中的多个索引条目中,查询包括第二地图网格48的标识和第一场景实例的标识的第一索引条目。
在步骤112中,基于第一索引条目中记录的第二地图网格对应的地图网格数据在第二内存空间中的存储位置,从第二内存空间查询与第一场景实例的第二地图网格对应的地图网格数据。
作为示例,参见图4A,基于第一索引条目中记录的第二地图网格48对应的地图网格数据在第二内存空间中的存储位置,从第二内存空间相应的存储位置处查询与第一场景实例的第二地图网格对应的地图网格数据。
在步骤113中,当在动态索引数据中未查询到第一索引条目时,第一场景实例在静态索引数据中查询包括第二地图网格的标识的第二索引条目;基于第二索引条目中记录的第二地图网格对应的地图网格数据在第一内存空间中的存储位置,从第一内存空间查询与第一场景实例的第二地图网格对应的地图网格数据。
作为示例,参见图4A,当在动态索引数据50中未查询到第一索引条目时,第一场景实例在静态索引数据中查询包括第二地图网格46的标识的第二索引条目;基于第二索引条目中记录的第二地图网格46对应的地图网格数据在第一内存空间中的存储位置,从第一内存空间查询与第一场景实例的第二地图网格对应的地图网格数据。
在步骤114中,将查询得到的第二地图网格对应的地图网格数据,发送至发起第二地图数据请求的客户端。
如此,通过动态索引数据和静态索引数据确定第二地图网格对应的地图网格数据的存储位置,然后基于存储位置从第一内存空间查询与第一场景实例的第二地图网格对应的地图网格数据,从而实现了所查询到的地图网格数据的准确性。
在一些实施例中,参见图3G,图3G是本申请实施例提供的数据处理方法步骤115-118具体实现的流程示意图。在上述步骤104之前,服务器可以通过步骤115至步骤118实现将地图网格数据,发送至发起第三地图数据请求的客户端。
在步骤115中,接收客户端针对第一地图网格的第三地图数据请求。
其中,第三地图数据请求中携带有第一地图网格的标识和第一场景实例的标识。
在步骤116中,第一场景实例在动态索引数据中查询包括第一地图网格的标识和第一场景实例的标识的第三索引条目。
作为示例,参见图4A,第一场景实例在动态索引数据中的多个索引条目中,查询包括第一地图网格47的标识和第一场景实例的标识的第三索引条目。
在步骤117中,基于第三索引条目中记录的第一地图网格对应的地图网格数据在第二内存空间中的存储位置,从第二内存空间中查询与第一场景实例的第一地图网格对应的地图网格数据。
作为示例,参见图4A,基于第三索引条目中记录的第一地图网格47对应的地图网格数据在第二内存空间中的存储位置,从第二内存空间相应的存储位置处查询与第一场景实例的第一地图网格对应的地图网格数据。
在步骤118中,将查询得到的第一地图网格对应的地图网格数据,发送至发起第三地图数据请求的客户端。
如此,由于第一地图网格是已经更新过的,因此,第一场景实例仅需在动态索引数据中查询包括第一地图网格的标识和第一场景实例的标识的第三索引条目,从而从第二内存空间中查询与第一地图网格对应的地图网格数据,从而实现了所查询到的地图网格数据的准确性。
如此,通过将服务器中的内存空间划分为第一内存空间和第二内存空间,将静态地图数据加载至第一内存空间,将动态地图数据加载至第二内存空间,从而实现了对地图数据的动静态分层存储,从而为不同的游戏客户端存储相同的静态地图数据,为不同的游戏客户端存储各自差异化的动态地图数据,从而有效节省了服务器的内存消耗,能够有效提高服务器的数据承载能力的同时,减少服务器中的数据冗余。
参见图3H和图3I,图3H是本申请实施例提供的数据处理方法步骤201-208具体实现的流程示意图,图3I是本申请实施例提供的数据处理方法步骤209-217具体实现的流程示意图,将结合图3H示出的步骤201至步骤208,以及图3I示出的步骤209至步骤217进行说明,步骤201至步骤217的执行主体可以是前述的服务器或终端。
在步骤201中,服务器将虚拟场景中至少一个地图分别对应的静态地图数据加载到第一内存空间。
在步骤202中,服务器在第一内存空间中构建与每个地图关联的静态索引数据。
在步骤203中,服务器响应于客户端启动虚拟场景中的第一地图,针对第一地图创建对应的第一场景实例。
在步骤204中,服务器接收显示虚拟场景的第一地图的客户端发送的第一地图数据请求。
在步骤205中,服务器响应于第一地图数据请求,通过第一场景实例执行以下处理:基于第一地图中待显示地图网格的标识,在第一内存空间中的静态索引数据中,查询与待显示地图网格的标识关联的存储位置;根据与待显示的地图网格的标识关联的存储位置,从第一内存空间中获取待显示的地图网格对应的地图网格数据。
在步骤206中,服务器向客户端发送待显示地图网格对应的地图网格数据。
在步骤207中,服务器响应于第一场景实例更新所运行的第一地图中的第一地图网格,将更新后的第一地图网格对应的地图网格数据加载到第二内存空间中对应第一场景实例的子空间。
在步骤208中,服务器基于第一地图网格在第二内存空间中的存储位置,构建更新第二内存空间中与第一场景实例关联的动态索引数据。
在步骤209中,服务器接收客户端针对第二地图网格的第二地图数据请求。
在步骤210中,第一场景实例在动态索引数据中查询包括第二地图网格的标识和第一场景实例的标识的第一索引条目。
在步骤211中,服务器基于第一索引条目中记录的第二地图网格对应的地图网格数据在第二内存空间中的存储位置,从第二内存空间查询与第一场景实例的第二地图网格对应的地图网格数据。
在步骤212中,当在动态索引数据中未查询到第一索引条目时,第一场景实例在静态索引数据中查询包括第二地图网格的标识的第二索引条目;基于第二索引条目中记录的第二地图网格对应的地图网格数据在第一内存空间中的存储位置,从第一内存空间查询与第一场景实例的第二地图网格对应的地图网格数据。
在步骤213中,将查询得到的第二地图网格对应的地图网格数据,发送至发起第二地图数据请求的客户端。
在步骤214中,接收客户端针对第一地图网格的第三地图数据请求。
在步骤215中,第一场景实例在动态索引数据中查询包括第一地图网格的标识和第一场景实例的标识的第三索引条目。
在步骤216中,基于第三索引条目中记录的第一地图网格对应的地图网格数据在第二内存空间中的存储位置,从第二内存空间中查询与第一场景实例的第一地图网格对应的地图网格数据。
在步骤217中,将查询得到的第一地图网格对应的地图网格数据,发送至发起第三地图数据请求的客户端。
下面,将说明本申请实施例在一个实际的网络游戏的应用场景中的示例性应用。
本申请实施例可以具有如下应用场景,例如,在一个实际的网络游戏的应用场景中,参见图5A至图5B,图5A是本申请实施例提供的数据处理方法的子图51的效果示意图,图5B是本申请实施例提供的数据处理方法的子图52的效果示意图。图5A中的子图51和图5B中的子图52分别表示同一网络游戏的两个不同的客户端在同一时间处于同一地图分配出来的两个不同的场景实例上,由于初始的静态地图数据是相同的,所以子图51所示出的场景实例和子图52所示出的场景实例的地形地貌是完全一样的(例如,子图51中的草地511和子图52中的草地521是完全一样的,子图51中的树木512和子图52中的树木522是完全一样的),即,子图51所示出的场景实例和子图52所示出的场景实例共享相同的静态地图数据。不同的是,在子图52所示出的场景实例中,有玩家自建的楼梯523;在子图51所示出的场景实例中,没有玩家自建的楼梯,即子图51所示出的场景实例中是原始未经改变的。网络服务器需要同时为这两个运行不同场景实例的客户端提供数据支撑。本申请实施例提供的数据处理方法,网络服务器在静态数据层(即上文所描述的第一内存空间)为众多游戏客户端维护一份相同的静态地图数据,静态地图数据是所有游戏客户端运行场景实例所必须的地图数据。例如,子图51所示出的场景实例和子图52所示出的场景实例的地形地貌是完全一样的,那么子图51所示出的场景实例和子图52所示出的场景实例可以共享网络服务器中的静态地图数据。对于子图51所示出的场景实例和子图52所示出的场景实例的差异化部分,即子图52所示出的场景实例中的玩家自建的楼梯523,网络服务器在动态数据层(即上文所描述的第二内存空间)中,为子图52所示出的场景实例中的玩家自建的楼梯523再单独维护一份动态地图数据。从而有效节省了网络服务器的数据冗余,为网络服务器释放出大量的承载空间,从而有效提高了网络服务器的承载能力。
本申请实施例提供的数据处理方法,可以通过以下两个总体步骤实现,其中一个总体步骤为,离线导出地图网格;另外一个总体步骤为,数据动静态分层。下面针对以上两个总体步骤进行详细说明。
首先,针对离线导出地图网格的总体步骤进行详细说明。
具体的,以网络服务器中生成尺寸的游戏地图的地图网格数据为例进行说明,生成全量的地图网格数据需要花费76603.61ms左右的时间,在进程运行的过程中,如此巨大的耗时成本是无法接受的,基于此,本申请实施例提供的离线导出工具,通过预先生成地图网格数据,并对地图网格数据进行序列化处理,得到地图网格数据的二进制文件,通过导出二进制文件,从而有效降低了进程运行的过程中的耗时成本和中央处理器(Central Processing Unit,CPU)的计算负荷。
参见图5C,图5C是本申请实施例提供的数据处理方法步骤501-505具体实现的流程示意图。
在步骤501中,网络服务器遍历虚拟场景中的每个地图;
即,在每个待发布版本的游戏服务的构建流程中,遍历待发布版本的游戏中的每个地图。
在步骤502中,每个地图开启子进程;
其中,每个地图的子进程之间可以并发执行。
在步骤503中,单地图执行导出工具,导出地图的静态资源文件中的静态地图数据。
其中,导出工具可以利用多进程模块执行导出任务,每个导出任务启动子进程进行,从而最大程度保证中央处理器的资源利用率,由于各个进程并发执行,所以当地图的数量小于中央处理器的核数时,整个导出过程的耗时近似等于导出单地图的最长耗时,从而加快了离线导出的过程。
其中,对于每个地图而言,通过导出工具生成静态地图数据,然后序列化至每个地图专属的静态资源文件(navmesh.bin)中,并将静态资源文件作为资源提交到相应版本的虚拟场景中。
参见图5D,图5D是本申请实施例提供的数据处理方法的文件结构示意图,静态资源文件的文件结构如图5D所示,按照静态资源文件头部、地图的各个地图网格(Tile)的顺序组织,构成静态资源文件,其中,地图中包括N个地图网格,N为大于或等于1的正整数。在静态资源文件中,每个地图网格的组织形式为地图网格长度、地图网格概要、地图网格字节流(即地图网格的静态地图数据)。在游戏服务进程启动后只需要把地图网格数据作为资源加载到内存,然后构建索引数据后,即可使用,这样做只需花费113.71ms。
在步骤504中,判断是否所有的地图均导出完毕。当还有地图没有导出完毕时,继续执行导出任务。
在步骤505中,当所有地图均导出完毕时,将导出的地图的静态地图数据提交到数据库中。
然后,针对数据动静态分层的总体步骤进行详细说明。
在离线状态下,通过导出工具生成的二进制的静态资源文件会作为静态地图数据加载到网络服务器的内存中,这部分静态地图数据和地图绑定,由相同地图分配处的场景实例共享这部分静态地图数据,通过进一步测试发现静态地图数据如果常驻内存,同时减去读文件所耗费是时长,单纯构建索引数据仅需花费44ms,在内存占用方面,静态地图数据只有12MB左右,索引数据只有10kb左右。
参见图5E,图5E是本申请实施例提供的数据处理方法的数据层的结构示意图。通过对网络服务器中存储地图数据的空间进行分层,分为动态数据层和静态数据层,其中,静态数据层中的静态地图数据与地图绑定,即静态数据层中的静态地图数据只能被场景实例索引和读取,不能被场景实例改变或删除。动态数据层中的动态地图数据则被每个场景实例所独享,不同的场景实例,在动态数据层中拥有不同的存储空间,且更新的场景实例在动态数据层中拥有各自独享的动态地图数据(例如,场景实例B和场景实例C)。
参见图5E,为了防止网络服务器中出现数据冗余和不必要的性能消耗,对于没有更新的场景实例,例如,场景实例A在动态数据层没有存储任何动态地图数据,场景实例A完全复用静态数据层中的静态地图数据。
参见图5E,即使场景实例发生更新,例如,场景实例B,由于整个地图在空间上按照坐标切割为不同的地图网格,动态数据层中也仅需单独存储更新的地图网格(地图网格54和地图网格55)的动态地图数据和索引数据57,对于没有更新的地图网格(地图网格56、地图网格58、地图网格59和地图网格60),则复用静态数据层中的相应地图网格的静态地图数据,即动态数据层针对场景实例B中的6个地图网格,仅存储地图网格54和地图网格55的动态地图数据。
参见图5E,只有当整个场景实例中的所有地图网格均发生更新时,例如,场景实例C,动态数据层针对场景实例C中的6个地图网格,存储场景实例C运行的地图中的所有地图网格的动态地图数据。
参见图5F,图5F是本申请实施例提供的数据处理方法步骤510-步骤523具体实现的流程示意图。在网络服务器进程启动之后,通过执行步骤510至步骤523,对虚拟场景的地图数据进行处理,下面,针对步骤510至步骤523进行详细说明。
在步骤510中,网络服务器读取各个地图的静态资源文件中的静态地图数据到内存中。
作为示例,网络服务器读取静态资源文件中的静态地图数据,并将静态地图数据作为资源加载到网络服务器的静态数据层。
在步骤511中,网络服务器构建静态地图网格和索引。
作为示例,参见图5E,基于静态地图数据和索引数据,网络服务器在静态数据层构建静态地图网格和索引。
在步骤512中,网络服务器在有客户端开启游戏时,创建场景实例。
作为示例,在网络服务器在静态数据层构建静态地图网格和索引之后,当有任意客户端进入虚拟场景时,客户端向网络服务器发送数据请求,网络服务器在有客户端开启游戏时,创建场景实例。
在步骤513中,网络服务器判断内存中是否有静态地图数据。
在步骤514中,当网络服务器判断内存中没有静态地图数据时,服务器返回错误,并结束。
在步骤515中,当网络服务器判断内存中有静态地图数据时,索引指向静态数据层。
在步骤516中,网络服务器响应于场景实例发生改变。
在步骤517中,网络服务器判断场景实例是否首次发生改变。
作为示例,当场景实例(运行)的地图发生改变时,场景实例向存储层发送发生了改变的地图网格数据,存储层根据存储层标识和地图网格的标识判断场景实例(运行)的地图是否首次发生改变(即存储层根据存储层标识和地图网格的标识,在动态资源层中查询索引数据中是否存在受影响地图网格的存储位置,当存在时,则说明不是首次发生改变,当不存在时,则说明是首次发生改变);当场景实例(运行)的地图是首次发生改变时,创建场景实例专属索引数据,并重新生成受影响地图网格(Tile)的地图网格数据,并将受影响地图网格的地图网格数据存储到动态资源层,修改索引数据,索引数据中针对受影响地图网格的存储位置指向动态数据层;当场景实例(运行)的地图不是首次发生改变时,直接重新生成受影响地图网格(Tile)的地图网格数据,并复用场景实例发生改变之前的索引数据,索引数据中针对受影响地图网格的存储位置指向动态数据层。
其中,索引数据的修改是指:在保持原有的动态资源层的索引条目不变的情况下,新增针对受影响地图网格的地图网格数据的索引条目,其中,新增的索引条目包括:实例标识、网格标识、存储位置,新增的索引条目中针对受影响地图网格的存储位置指向动态数据层;
其中,索引数据中的每个条目包括:动态条目:实例标识、网格标识、存储位置;静态条目:网格标识,存储位置。
在步骤518中,网络服务器在判断场景实例是首次发生改变时,创建场景实例专属索引数据,并重新生成受影响地图网格的地图网格数据。
在步骤519中,网络服务器在判断场景实例是非首次发生改变时,重新生成受影响地图网格的地图网格数据。
在步骤520中,网络服务器判断原地图网格是否是动态资源。
在步骤521中,网络服务器在判断原有地图网格是动态资源时,释放原有地图网格的资源,将原有地图网格的资源替换为新的地图网格数据。
作为示例,当被替换的地图网格的地图网格数据是动态数据层中的地图网格数据时,才会被场景实例所释放,如果被替换的地图网格的地图网格数据是静态资源层中的地图网格数据时,则不做处理(因为静态资源层中的地图网格数据只能被场景实例索引和读取,不能被场景实例改变和删除)。
在步骤522中,网络服务器在判断原有地图网格不是动态资源时,将原有地图网格的资源替换为新的地图网格数据。
在步骤523中,网络服务器判断场景实例是否还存在,当场景实例不存在时,结束进程;当场景实例存在时,继续执行上述步骤516。
作为示例,在完成地图网格数据替换和索引数据更新之后,判断场景实例是否还在使用(即是否存在),当场景实例存在时,整个流程不断循环,直到场景实例被销毁(即场景实例不再使用);当场景实例不存在时,结束流程。对结果数据进行分析,地图网格的粒度为,对应地图网格占用内存为不等,如果一个场景实例只在某一个地图网格上发生了改变,通过本申请实施例提供的数据处理方法,只需要额外增加索引数据和最多的改变地图网格的地图网格数据,即至多增加的数据,而全量的地图网格数据则有,即增加的数据较之于全量的地图网格数据,增加的数据所引起的内存消耗相对较小。
如此,通过本申请实施例提供的数据处理方法,有效解决了传统服务器中将地图网格作为静态资源场景实例共享,导致在运行时只能加阻挡物,无法支持地图网格动态生成。并且通过离线导出工具、运行时数据动静态分离,解决了单地图实例独享地图网格带来的服务器承载降低的问题,将性能瓶颈流程转移到离线进行,有效减少了数据冗余,使得能够有效满足服务器的性能要求。
可以理解的是,在本申请实施例中,涉及到地图数据等相关的数据,当本申请实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
下面继续说明本申请实施例提供的数据处理装置255的实施为软件模块的示例性结构,在一些实施例中,如图2所示,存储在存储器250的数据处理装置255中的软件模块可以包括:虚拟场景服务模块2551,用于将虚拟场景中至少一个地图分别对应的静态地图数据加载到第一内存空间,其中,每个地图的静态地图数据包括地图中多个地图网格分别对应的地图网格数据;存储服务模块2552,用于在第一内存空间中构建与每个地图关联的静态索引数据,其中,静态索引数据包括地图中多个地图网格分别在第一内存空间中的存储位置,且静态索引数据用于响应运行地图的任意场景实例的地图数据请求;虚拟场景服务模块2551,还用于响应于第一场景实例更新所运行的第一地图中的第一地图网格,将更新后的第一地图网格对应的地图网格数据加载到第二内存空间中对应第一场景实例的子空间,其中,不同的场景实例在第二内存空间中对应不同的子空间;存储服务模块2552,还用于基于第一地图网格在第二内存空间中的存储位置,构建或更新第二内存空间中与第一场景实例关联的动态索引数据,其中,动态索引数据的优先级高于静态索引数据。
在一些实施例中,上述虚拟场景服务模块2551,还用于初始化虚拟场景服务,其中,虚拟场景服务包括虚拟场景的至少一个地图分别对应的静态地图数据;通过虚拟场景服务从数据库获取至少一个地图分别对应的静态地图数据,并加载到第一内存空间中;其中,至少一个地图分别对应的静态地图数据是在离线阶段从静态资源文件中读取并导出到数据库的,离线阶段是虚拟场景服务启动前的阶段。
在一些实施例中,上述存储服务模块2552,还用于遍历新发布版本的虚拟场景中的每个地图;针对新发布版本的虚拟场景中的每个地图并行执行以下处理:基于地图中多个地图网格分别对应的地图网格数据,构建静态资源文件,其中,静态资源文件中包括每个地图网格对应的地图网格数据的基本信息,基本信息包括地图网格数据的长度和地图网格数据;从静态资源文件中导出静态地图数据至数据库中。
在一些实施例中,上述虚拟场景服务模块2551,还用于响应于客户端启动虚拟场景中的第一地图,针对第一地图创建对应的第一场景实例;其中,第一地图是至少一个地图中的任意一个地图,第一场景实例用于响应不同的客户端针对第一地图的地图数据请求。
在一些实施例中,上述虚拟场景服务模块2551,还用于接收显示虚拟场景的第一地图的客户端发送的第一地图数据请求,其中,第一地图数据请求中携带有第一地图中待显示地图网格的标识,待显示地图网格的标识包括未被更新的第一地图网格的标识或第二地图网格的标识;响应于第一地图数据请求,通过第一场景实例执行以下处理:基于第一地图中待显示地图网格的标识,在第一内存空间中的静态索引数据中,查询与待显示地图网格的标识关联的存储位置;根据与待显示的地图网格的标识关联的存储位置,从第一内存空间中获取待显示的地图网格对应的地图网格数据;向客户端发送待显示地图网格对应的地图网格数据。
在一些实施例中,上述存储服务模块2552,还用于针对任意一个地图执行以下处理:获取地图的每个地图网格分别对应的地图网格数据在第一内存空间中的存储位置;构建每个地图网格的索引条目,其中,地图网格的索引条目包括地图网格的标识和地图网格对应的地图网格数据在第一内存空间中的存储位置之间的关联关系;将地图的每个地图网格的索引条目组合为静态索引数据,并加载到第一内存空间中。
在一些实施例中,上述虚拟场景服务模块2551,还用于接收第一场景实例发送的第一次更新数据,其中,第一次更新数据是第一场景实例在第一次更新所运行的第一地图中的第一地图网格后发送的,且第一次更新数据是第一次更新后的第一地图网格对应的地图网格数据;将第一次更新数据加载到第二内存空间中对应第一场景实例的子空间。
在一些实施例中,上述存储服务模块2552,还用于获取第一地图网格对应的地图网格数据在第二内存空间中的存储位置;构建第一地图网格的索引条目,其中,第一地图网格的索引条目包括第一地图网格对应的地图网格数据在第二内存空间中的存储位置、第一地图网格的标识、以及第一场景实例的标识之间的关联关系;将第一地图网格的索引条目作为动态索引数据加载到第二内存空间中。
在一些实施例中,上述虚拟场景服务模块2551,还用于接收第一场景实例发送的第N次更新数据,其中,N为大于或等于2的整数,第N次更新数据是第一场景实例在第N次更新所运行的第一地图中的第一地图网格后发送的,且第N次更新数据是第N次更新后的第一地图网格对应的地图网格数据;将第二内存空间中对应第一场景实例的子空间中的第N-1次更新数据删除,并将第N次更新数据加载到第二内存空间中对应第一场景实例的子空间。
在一些实施例中,上述存储服务模块2552,还用于确定第N次更新数据在第二内存空间中的存储位置;从第二内存空间中与第一场景实例关联的动态索引数据中,查找第N-1次更新的第一地图网格的索引条目,并执行以下处理:将第N-1次更新的第一地图网格的索引条目中的存储位置替换为,第N次更新数据在第二内存空间中的存储位置,得到第N次更新的索引条目;其中,第N次更新的索引条目包括第N次更新数据在第二内存空间中的存储位置、第一地图网格的标识、以及第一场景实例的标识之间的关联关系。
在一些实施例中,上述数据处理装置255还包括:分配模块,用于当第一场景实例第一次更新所运行的第一地图中的第一地图网格时,针对第一场景实例更新所运行的第一地图中的每个地图网格,在第二内存空间中分配一一对应的子空间,其中,不同的地图网格对应不同的子空间,或者,当创建第一场景实例时,针对第一场景实例所运行的第一地图中的每个地图网格,在第二内存空间中分配一一对应的子空间。
在一些实施例中,上述数据处理装置255还包括:请求模块,用于接收客户端针对第二地图网格的第二地图数据请求,第二地图数据请求中携带有第二地图网格的标识和第一场景实例的标识;第一场景实例在动态索引数据中查询包括第二地图网格的标识和第一场景实例的标识的第一索引条目;基于第一索引条目中记录的第二地图网格对应的地图网格数据在第二内存空间中的存储位置,从第二内存空间查询与第一场景实例的第二地图网格对应的地图网格数据;当在动态索引数据中未查询到第一索引条目时,第一场景实例在静态索引数据中查询包括第二地图网格的标识的第二索引条目;基于第二索引条目中记录的第二地图网格对应的地图网格数据在第一内存空间中的存储位置,从第一内存空间查询与第一场景实例的第二地图网格对应的地图网格数据;将查询得到的第二地图网格对应的地图网格数据,发送至发起第二地图数据请求的客户端。
在一些实施例中,上述请求模块,还用于接收客户端针对第一地图网格的第三地图数据请求,第三地图数据请求中携带有第一地图网格的标识和第一场景实例的标识;第一场景实例在动态索引数据中查询包括第一地图网格的标识和第一场景实例的标识的第三索引条目;基于第三索引条目中记录的第一地图网格对应的地图网格数据在第二内存空间中的存储位置,从第二内存空间中查询与第一场景实例的第一地图网格对应的地图网格数据;将查询得到的第一地图网格对应的地图网格数据,发送至发起第三地图数据请求的客户端。
本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的数据处理方法。
本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的数据处理方法,例如,如图3A示出的数据处理方法。
在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
综上,本申请实施例具有以下有益效果:
(1)通过将服务器中的内存空间划分为第一内存空间和第二内存空间,将静态地图数据加载至第一内存空间,将动态地图数据加载至第二内存空间,从而实现了对地图数据的动静态分层存储,从而为不同的游戏客户端存储相同的静态地图数据,为不同的游戏客户端存储各自差异化的动态地图数据,从而有效节省了服务器的内存消耗,能够有效提高服务器的数据承载能力的同时,减少服务器中的数据冗余。
(2)通过针对新发布版本的虚拟场景中的每个地图进行并行处理,从而有效节省了从静态资源文件中读取并导出静态地图数据的时间。
(3)通过构建静态索引数据,从而利用静态索引数据响应运行地图的任意场景实例的地图数据请求,便于任意场景实例从第一内存空间中获取静态地图数据。
(4)在第一场景实例在第N次更新所运行的第一地图中的第一地图网格时,通过将第二内存空间中对应第一场景实例的子空间中的第N-1次更新数据删除,再将第N次更新数据加载到第二内存空间中对应第一场景实例的子空间中,从而在不断更新的过程中,保证第二内存空间中对应第一场景实例的子空间中始终存储最新的更新数据,有效避免了第二内存空间中的数据冗余。
(5)服务器根据显示虚拟场景的第一地图的客户端发送的第一地图数据请求,在第一内存空间的静态索引数据中,查询与待显示地图网格的标识关联的存储位置,从而根据存储位置获取对应的地图网格数据,并将地图网格数据发送至客户端,从而,通过静态索引数据实现了对存储位置的精准查询。
(6)通过动态索引数据和静态索引数据确定第二地图网格对应的地图网格数据的存储位置,然后基于存储位置从第一内存空间查询与第一场景实例的第二地图网格对应的地图网格数据。从而实现了所查询到的地图网格数据的准确性。
(7)由于第一地图网格是已经更新过的,因此,第一场景实例仅需在动态索引数据中查询包括第一地图网格的标识和第一场景实例的标识的第三索引条目,从而从第二内存空间中查询与第一地图网格对应的地图网格数据,从而实现了所查询到的地图网格数据的准确性。
以上,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。
Claims (17)
1.一种数据处理方法,其特征在于,所述方法包括:
将虚拟场景中至少一个地图分别对应的静态地图数据加载到第一内存空间,其中,每个所述地图的静态地图数据包括所述地图中多个地图网格分别对应的地图网格数据;
在所述第一内存空间中构建与每个所述地图关联的静态索引数据,其中,所述静态索引数据包括所述地图中多个地图网格分别在所述第一内存空间中的存储位置,且所述静态索引数据用于响应运行所述地图的任意场景实例的地图数据请求;
响应于第一场景实例更新所运行的第一地图中的第一地图网格,将更新后的所述第一地图网格对应的地图网格数据加载到第二内存空间中对应所述第一场景实例的子空间,其中,不同的所述场景实例在所述第二内存空间中对应不同的子空间,以及
基于所述第一地图网格在所述第二内存空间中的存储位置,构建或更新所述第二内存空间中与所述第一场景实例关联的动态索引数据,其中,所述动态索引数据的优先级高于所述静态索引数据。
2.根据权利要求1所述的方法,其特征在于,所述将虚拟场景中至少一个地图分别对应的静态地图数据加载到第一内存空间,包括:
初始化虚拟场景服务,其中,所述虚拟场景服务包括所述虚拟场景的至少一个地图分别对应的静态地图数据;
通过所述虚拟场景服务从数据库获取至少一个地图分别对应的静态地图数据,并加载到所述第一内存空间中;
其中,所述至少一个地图分别对应的静态地图数据是在离线阶段从静态资源文件中读取并导出到所述数据库的,所述离线阶段是所述虚拟场景服务启动前的阶段。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
遍历新发布版本的所述虚拟场景中的每个所述地图;
针对所述新发布版本的所述虚拟场景中的每个所述地图并行执行以下处理:
基于所述地图中多个地图网格分别对应的地图网格数据,构建所述静态资源文件,其中,所述静态资源文件中包括每个所述地图网格对应的地图网格数据的基本信息,所述基本信息包括所述地图网格数据的长度和所述地图网格数据;
从所述静态资源文件中导出所述静态地图数据至所述数据库中。
4.根据权利要求1所述的方法,其特征在于,在响应于第一场景实例更新所运行的第一地图中的第一地图网格之前,所述方法还包括:
响应于客户端启动所述虚拟场景中的所述第一地图,针对所述第一地图创建对应的所述第一场景实例;
其中,所述第一地图是所述至少一个地图中的任意一个地图,所述第一场景实例用于响应不同的所述客户端针对所述第一地图的地图数据请求。
5.根据权利要求1所述的方法,其特征在于,在响应于第一场景实例更新所运行的第一地图中的第一地图网格之前,所述方法还包括:
接收显示所述虚拟场景的第一地图的客户端发送的第一地图数据请求,其中,所述第一地图数据请求中携带有所述第一地图中待显示地图网格的标识,所述待显示地图网格的标识包括未被更新的所述第一地图网格的标识或第二地图网格的标识;
响应于所述第一地图数据请求,通过所述第一场景实例执行以下处理:
基于所述第一地图中待显示地图网格的标识,在所述第一内存空间中的所述静态索引数据中,查询与所述待显示地图网格的标识关联的存储位置;
根据与所述待显示的地图网格的标识关联的存储位置,从所述第一内存空间中获取所述待显示的地图网格对应的地图网格数据;
向所述客户端发送所述待显示地图网格对应的地图网格数据。
6.根据权利要求1所述的方法,其特征在于,所述在所述第一内存空间中构建与每个所述地图关联的静态索引数据,包括:
针对任意一个所述地图执行以下处理:
获取所述地图的每个所述地图网格分别对应的地图网格数据在所述第一内存空间中的存储位置;
构建每个所述地图网格的索引条目,其中,所述地图网格的索引条目包括所述地图网格的标识和所述地图网格对应的地图网格数据在所述第一内存空间中的存储位置之间的关联关系;
将所述地图的每个所述地图网格的索引条目组合为静态索引数据,并加载到所述第一内存空间中。
7.根据权利要求1所述的方法,其特征在于,所述将更新后的所述第一地图网格对应的地图网格数据加载到第二内存空间中对应所述第一场景实例的子空间,包括:
接收所述第一场景实例发送的第一次更新数据,其中,所述第一次更新数据是所述第一场景实例在第一次更新所运行的第一地图中的第一地图网格后发送的,且所述第一次更新数据是第一次更新后的所述第一地图网格对应的地图网格数据;
将所述第一次更新数据加载到第二内存空间中对应所述第一场景实例的子空间。
8.根据权利要求7所述的方法,其特征在于,所述基于所述第一地图网格在所述第二内存空间中的存储位置,构建所述第二内存空间中与所述第一场景实例关联的动态索引数据,包括:
获取所述第一地图网格对应的地图网格数据在所述第二内存空间中的存储位置;
构建所述第一地图网格的索引条目,其中,所述第一地图网格的索引条目包括所述第一地图网格对应的地图网格数据在所述第二内存空间中的存储位置、所述第一地图网格的标识、以及所述第一场景实例的标识之间的关联关系;
将所述第一地图网格的索引条目作为动态索引数据加载到所述第二内存空间中。
9.根据权利要求1所述的方法,其特征在于,所述响应于第一场景实例更新所运行的第一地图中的第一地图网格,将更新后的所述第一地图网格对应的地图网格数据加载到第二内存空间中对应所述第一场景实例的子空间,包括:
接收所述第一场景实例发送的第N次更新数据,其中,N为大于或等于2的整数,所述第N次更新数据是所述第一场景实例在第N次更新所运行的第一地图中的第一地图网格后发送的,且所述第N次更新数据是第N次更新后的所述第一地图网格对应的地图网格数据;
将所述第二内存空间中对应所述第一场景实例的子空间中的第N-1次更新数据删除,并将所述第N次更新数据加载到所述第二内存空间中对应所述第一场景实例的子空间。
10.根据权利要求9所述的方法,其特征在于,所述基于所述第一地图网格在所述第二内存空间中的存储位置,更新所述第二内存空间中与所述第一场景实例关联的动态索引数据,包括:
确定所述第N次更新数据在所述第二内存空间中的存储位置;
从所述第二内存空间中与所述第一场景实例关联的动态索引数据中,查找第N-1次更新的所述第一地图网格的索引条目,并执行以下处理:
将第N-1次更新的所述第一地图网格的索引条目中的存储位置替换为,所述第N次更新数据在所述第二内存空间中的存储位置,得到第N次更新的索引条目;
其中,所述第N次更新的索引条目包括所述第N次更新数据在所述第二内存空间中的存储位置、所述第一地图网格的标识、以及所述第一场景实例的标识之间的关联关系。
11.根据权利要求1所述的方法,其特征在于,所述响应于第一场景实例更新所运行的第一地图中的第一地图网格,将更新后的所述第一地图网格对应的第一地图网格数据加载到第二内存空间中对应所述第一场景实例的子空间之前,所述方法还包括:
当所述第一场景实例第一次更新所运行的第一地图中的第一地图网格时,针对所述第一场景实例更新所运行的第一地图中的每个地图网格,在所述第二内存空间中分配一一对应的子空间,其中,不同的所述地图网格对应不同的所述子空间,或者,
当创建所述第一场景实例时,针对所述第一场景实例所运行的第一地图中的每个地图网格,在所述第二内存空间中分配一一对应的子空间。
12.根据权利要求1所述的方法,其特征在于,在基于所述第一地图网格在所述第二内存空间中的存储位置,构建或更新所述第二内存空间中与所述第一场景实例关联的动态索引数据之后,所述方法还包括:
接收客户端针对第二地图网格的第二地图数据请求,所述第二地图数据请求中携带有所述第二地图网格的标识和所述第一场景实例的标识;
所述第一场景实例在所述动态索引数据中查询包括所述第二地图网格的标识和所述第一场景实例的标识的第一索引条目;
基于所述第一索引条目中记录的所述第二地图网格对应的地图网格数据在所述第二内存空间中的存储位置,从所述第二内存空间查询与所述第一场景实例的第二地图网格对应的地图网格数据;
当在所述动态索引数据中未查询到所述第一索引条目时,所述第一场景实例在所述静态索引数据中查询包括所述第二地图网格的标识的第二索引条目;基于所述第二索引条目中记录的所述第二地图网格对应的地图网格数据在所述第一内存空间中的存储位置,从所述第一内存空间查询与所述第一场景实例的第二地图网格对应的地图网格数据;
将查询得到的所述第二地图网格对应的地图网格数据,发送至发起所述第二地图数据请求的客户端。
13.根据权利要求1所述的方法,其特征在于,在基于所述第一地图网格在所述第二内存空间中的存储位置,构建或更新所述第二内存空间中与所述第一场景实例关联的动态索引数据之后,所述方法还包括:
接收客户端针对所述第一地图网格的第三地图数据请求,所述第三地图数据请求中携带有所述第一地图网格的标识和所述第一场景实例的标识;
所述第一场景实例在所述动态索引数据中查询包括所述第一地图网格的标识和所述第一场景实例的标识的第三索引条目;
基于所述第三索引条目中记录的所述第一地图网格对应的地图网格数据在所述第二内存空间中的存储位置,从所述第二内存空间中查询与所述第一场景实例的第一地图网格对应的地图网格数据;
将查询得到的所述第一地图网格对应的地图网格数据,发送至发起所述第三地图数据请求的客户端。
14.一种数据处理装置,其特征在于,所述装置包括:
虚拟场景服务模块,用于将虚拟场景中至少一个地图分别对应的静态地图数据加载到第一内存空间,其中,每个所述地图的静态地图数据包括所述地图中多个地图网格分别对应的地图网格数据;
存储服务模块,用于在所述第一内存空间中构建与每个所述地图关联的静态索引数据,其中,所述静态索引数据包括所述地图中多个地图网格分别在所述第一内存空间中的存储位置,且所述静态索引数据用于响应运行所述地图的任意场景实例的地图数据请求;
所述虚拟场景服务模块,还用于响应于第一场景实例更新所运行的第一地图中的第一地图网格,将更新后的所述第一地图网格对应的地图网格数据加载到第二内存空间中对应所述第一场景实例的子空间,其中,不同的所述场景实例在所述第二内存空间中对应不同的子空间;
所述存储服务模块,还用于基于所述第一地图网格在所述第二内存空间中的存储位置,构建或更新所述第二内存空间中与所述第一场景实例关联的动态索引数据,其中,所述动态索引数据的优先级高于所述静态索引数据。
15.一种电子设备,其特征在于,所述电子设备包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令或者计算机程序时,实现权利要求1至13任一项所述的数据处理方法。
16.一种计算机可读存储介质,存储有可执行指令或者计算机程序,其特征在于,所述可执行指令被处理器执行时实现权利要求1至13任一项所述的数据处理方法。
17.一种计算机程序产品,包括计算机程序或指令,其特征在于,所述计算机程序或指令被处理器执行时实现权利要求1至13任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210177617.5A CN114225385B (zh) | 2022-02-25 | 2022-02-25 | 云游戏数据处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210177617.5A CN114225385B (zh) | 2022-02-25 | 2022-02-25 | 云游戏数据处理方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114225385A true CN114225385A (zh) | 2022-03-25 |
CN114225385B CN114225385B (zh) | 2022-07-08 |
Family
ID=80748404
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210177617.5A Active CN114225385B (zh) | 2022-02-25 | 2022-02-25 | 云游戏数据处理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114225385B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102800205A (zh) * | 2012-08-30 | 2012-11-28 | 南京大学 | 基于动态地图界面的车载虚拟终端系统 |
CN107209707A (zh) * | 2015-01-30 | 2017-09-26 | 微软技术许可有限责任公司 | 基于云的分级系统保存 |
CN109260708A (zh) * | 2018-08-24 | 2019-01-25 | 腾讯科技(深圳)有限公司 | 地图渲染方法、装置以及计算机设备 |
CN111417978A (zh) * | 2018-04-10 | 2020-07-14 | 谷歌有限责任公司 | 游戏渲染中的内存管理 |
US20210019070A1 (en) * | 2019-07-18 | 2021-01-21 | Pure Storage, Inc. | Virtual storage system architecture |
-
2022
- 2022-02-25 CN CN202210177617.5A patent/CN114225385B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102800205A (zh) * | 2012-08-30 | 2012-11-28 | 南京大学 | 基于动态地图界面的车载虚拟终端系统 |
CN107209707A (zh) * | 2015-01-30 | 2017-09-26 | 微软技术许可有限责任公司 | 基于云的分级系统保存 |
CN111417978A (zh) * | 2018-04-10 | 2020-07-14 | 谷歌有限责任公司 | 游戏渲染中的内存管理 |
CN109260708A (zh) * | 2018-08-24 | 2019-01-25 | 腾讯科技(深圳)有限公司 | 地图渲染方法、装置以及计算机设备 |
US20210019070A1 (en) * | 2019-07-18 | 2021-01-21 | Pure Storage, Inc. | Virtual storage system architecture |
Also Published As
Publication number | Publication date |
---|---|
CN114225385B (zh) | 2022-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108255539B (zh) | 基于云计算和数据虚拟化的气象卫星数据处理系统 | |
CN112236760B (zh) | 一种图数据的更新方法、系统、计算机可读存储介质及设备 | |
CN104539681A (zh) | 分布式gis加速系统和gis服务的处理方法 | |
US20230410433A1 (en) | Navigation mesh update | |
CN110908697A (zh) | 一种资源打包方法、装置、服务器及存储介质 | |
US20150113535A1 (en) | Parallel data processing system, computer, and parallel data processing method | |
CN110908707A (zh) | 一种资源打包方法、装置、服务器及存储介质 | |
CN116680040B (zh) | 一种容器处理方法、装置、设备、存储介质及程序产品 | |
CN108073423A (zh) | 一种加速器加载方法、系统和加速器加载装置 | |
CN113674131A (zh) | 硬件加速器设备管理方法、装置及电子设备和存储介质 | |
CN111159265B (zh) | 一种etl数据迁移方法和系统 | |
CN113010265A (zh) | Pod的调度方法、调度器、存储插件及系统 | |
CN115994197A (zh) | GeoSOT网格数据计算方法 | |
CN113778961B (zh) | 一种cim模型数据的生产管理方法、装置及系统 | |
CN114153615A (zh) | 内存管理方法、装置、设备、计算机程序及存储介质 | |
CN114225385B (zh) | 云游戏数据处理方法、装置、设备及存储介质 | |
CN111737166B (zh) | 数据对象的处理方法、装置及设备 | |
CN109558082B (zh) | 分布式文件系统 | |
CN114341808A (zh) | 用于交互世界的低延迟、分布式应用 | |
CN115794400A (zh) | 深度学习模型的内存管理方法、装置、设备及存储介质 | |
CN112755534B (zh) | 一种数据处理方法、装置和存储介质 | |
CN115269600A (zh) | 一种飞机数据的管理方法、装置、电子设备及存储介质 | |
CN115686811A (zh) | 进程管理方法、装置、计算机设备及存储介质 | |
CN114547055A (zh) | 一种数据处理方法及装置 | |
CN113626510A (zh) | 交易核对方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40070312 Country of ref document: HK |