CN108404415A - 数据的处理方法和装置 - Google Patents
数据的处理方法和装置 Download PDFInfo
- Publication number
- CN108404415A CN108404415A CN201810242035.4A CN201810242035A CN108404415A CN 108404415 A CN108404415 A CN 108404415A CN 201810242035 A CN201810242035 A CN 201810242035A CN 108404415 A CN108404415 A CN 108404415A
- Authority
- CN
- China
- Prior art keywords
- data
- logic
- type
- synchronized
- executes
- 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
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/60—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
- A63F13/67—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor adaptively or by learning from player actions, e.g. skill level adjustment or by storing successful combat sequences for re-use
-
- 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/60—Methods for processing data by generating or executing the game program
- A63F2300/6027—Methods for processing data by generating or executing the game program using adaptive systems learning from user actions, e.g. for skill level adjustment
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种数据的处理方法和装置。其中,该方法包括:获取第一进程执行第一逻辑的得到的第一数据;将第一数据同步到第二进程,其中,第二进程基于第一数据执行第二逻辑;将第二进程基于第一数据执行第二逻辑得到的第二数据返回至第一进程,其中,第一进程基于第二数据执行第一逻辑。本发明解决了现有技术中,将游戏逻辑和AI逻辑通过一个进程来实现,增加了进程了计算量影响游戏流畅性的技术问题。
Description
技术领域
本发明涉及计算机软件技术领域,具体而言,涉及一种数据的处理方法和装置。
背景技术
人工智能是指通过算法编程使得计算机模仿人完成一些像人一样的任务,同时在执行任务时模仿人的思维和智慧。人工智能需要进行大量的逻辑运算和大量的数据输入训练才能使其更加智能化。以游戏为例,由于游戏创建的虚拟世界中,需要设置很多NPC(Non-Player Character)人物与玩家进行交互,这便需要NPC人物智能地与玩家进行更真实的交互,以提高游戏的真实性体验。
目前,很多网络游戏的AI都采用有限状态机或者行为树的方式来实现,AI执行逻辑依赖于游戏内实体数据,游戏内实体数据由游戏逻辑产生,游戏逻辑的执行又依赖于AI执行逻辑的决策结果,游戏内实体、逻辑、数据相互依赖。游戏AI分布式执行是将游戏AI执行逻辑与游戏逻辑分离,解耦它们之间的相互依赖的关系,以提高系统的性能及稳定性。由于游戏中实体、逻辑、数据相互依赖,通常的做法是将AI执行逻辑与游戏逻辑放在同一个进程,无需数据状态的同步,开发的难度也较低,对于大型网络游戏,游戏逻辑执行进程通常会设计与多进程结构,来分散游戏逻辑计算的压力,提高系统的负载能力。但是,由于AI逻辑与游戏逻辑在同一个进程执行,相互依赖的关系导致无法并发,同时增加了单个进程的计算量,降低了系统的性能;由于单个进程承载的计算量有限,当同场景内出现大量AI计算时,会影响游戏的流畅体验;大量有状态的数据逻辑集中在一个进程,当一段代码有问题时会影响其它逻辑,大大影响系统的稳定性。
针对上述现有技术中,将游戏逻辑和AI逻辑通过一个进程来实现,增加了进程了计算量影响游戏流畅性的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种数据的处理方法和装置,以至少解决现有技术中,将游戏逻辑和AI逻辑通过一个进程来实现,增加了进程了计算量影响游戏流畅性的技术问题。
根据本发明实施例的一个方面,提供了一种数据的处理方法,包括:获取第一进程执行第一逻辑的得到的第一数据;将第一数据同步到第二进程,其中,第二进程基于第一数据执行第二逻辑;将第二进程基于第一数据执行第二逻辑得到的第二数据返回至第一进程,其中,第一进程基于第二数据执行第一逻辑。
进一步地,将第一数据同步到第二进程,包括:确定第一数据的类型,第一数据的类型包括如下任意之一:第一类型和第二类型,其中,第一类型用于表征数据变更的频率低于预设阈值,第二类型用于表征数据变更的频率高于等于预设阈值;采用与第一数据的类型对应的同步方式将第一数据同步到第二进程。
进一步地,采用与第一数据的类型对应的同步方式将第一数据同步到第二进程,包括:在第一数据的类型为第一类型的情况下,将第一数据实时同步到第二进程;在第一数据的类型为第二类型的情况下,将第一数据按照预设周期进行打包处理得到对应的数据包后同步到第二进程。
进一步地,在第一数据的类型为第一类型的情况下,将第一数据实时同步到第二进程,包括:建立第一进程与第二进程之间的路由通道;通过路由通道将第一数据实时同步到第二进程。
进一步地,建立第一进程与第二进程之间的路由通道,包括:通过第二进程向第三进程发起数据请求,其中,数据请求用于请求第一进程上的第一数据;判断第三进程上是否存在第一数据;在第三进程上存在第一数据的情况下,直接将第一数据返回至第二进程;在第三进程上不存在第一数据的情况下,通过第三进程向第一进程请求第一数据,并将请求得到的第一数据返回至第二进程,并缓存到第三进程,其中,第一进程、第三进程和第二进程之间传输数据的通道为路由通道。
进一步地,在第一数据的类型为第二类型的情况下,将第一数据按照预设周期进行打包处理得到对应的数据包后同步到第二进程,包括:获取第一进程在预设周期内更新的第一数据;将第一进程在预设周期内更新的第一数据进行打包处理得到对应的数据包,并通过第三进程将数据包同步到第二进程。
进一步地,第一进程用于执行游戏逻辑,第二进程用于执行人工智能逻辑。
进一步地,在将第二进程基于第一数据执行第二逻辑得到的第二数据返回至第一进程之前,方法还包括:第二进程以多进程的方式执行第二逻辑。
根据本发明实施例的另一方面,还提供了一种数据的处理装置,包括:获取单元,用于获取第一进程执行第一逻辑的得到的第一数据;同步单元,用于将第一数据同步到第二进程,其中,第二进程基于第一数据执行第二逻辑;处理单元,用于将第二进程基于第一数据执行第二逻辑得到的第二数据返回至第一进程,其中,第一进程基于第二数据执行第一逻辑。
根据本发明实施例的另一方面,还提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述方法实施例中任意一项可选的或优选的数据的处理方法。
根据本发明实施例的另一方面,还提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述方法实施例中任意一项可选的或优选的数据的处理方法。
根据本发明实施例的另一方面,还提供了一种终端,包括:一个或多个处理器,存储器,显示装置以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行上述方法实施例中任意一项可选的或优选的数据的处理方法。
在本发明实施例中,通过获取第一进程执行第一逻辑的得到的第一数据;将第一数据同步到第二进程,其中,第二进程基于第一数据执行第二逻辑;将第二进程基于第一数据执行第二逻辑得到的第二数据返回至第一进程,其中,第一进程基于第二数据执行第一逻辑,达到了通过数据同步的方式将相互依赖的多个逻辑使用不同的进程来执行的目的,从而实现了降低单个进程计算压力、提高系统稳定性的技术效果,进而解决了现有技术中,将游戏逻辑和AI逻辑通过一个进程来实现,增加了进程了计算量影响游戏流畅性的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种数据的处理方法流程图;
图2是根据本发明实施例的一种可选的数据的处理方法流程图;
图3是根据本发明实施例的一种可选的数据的处理方法流程图;
图4是根据本发明实施例的一种可选的数据的处理方法流程图;
图5是根据本发明实施例的一种可选的游戏AI分布执行方案的架构示意图;
图6是根据本发明实施例的一种可选的游戏AI分布执行方案的简化架构示意图;
图7是根据本发明实施例的一种可选的中低频数据同步的示意图;
图8是根据本发明实施例的一种可选的低频数据的同步时序示意图;
图9是根据本发明实施例的一种可选的高频数据的同步时序示意图;
图10是根据本发明实施例的一种可选的AI执行单元执行AI逻辑的流程图;
图11是根据本发明实施例的一种数据的处理装置示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明实施例,提供了一种数据的处理方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本发明实施例的一种数据的处理方法流程图,如图1所示,该方法包括如下步骤:
步骤S102,获取第一进程执行第一逻辑的得到的第一数据。
需要说明的是,上述第一进程可以是任意一种的应用的进程,可选地,第一进程可以是涉及到人工智能(AI)的各种应用的进程,由于人工智能算法计算量庞大,在很多人工智能应用中,如果将人工智能逻辑与应用的逻辑在同一进程中执行,可能会大大这些应用本身的流畅性。因而,本申请将人工智能应用中的人工智能逻辑分离出来,使用单独的进程执行,从而避免了AI逻辑对应用进程造成的计算压力,同时增加了应用逻辑执行与AI执行的并发能力,使得应用中虽然存在大量AI计算,但仍然可以达到流畅运行的目的。
作为一种可选的实施例,本申请各个实施例以游戏为例来进行说明,则上述第一进程可以是执行游戏逻辑的进程。上述第一数据可以是由游戏逻辑产生的各种游戏实体数据。
步骤S104,将第一数据同步到第二进程,其中,第二进程基于第一数据执行第二逻辑。
具体地,上述第二进程可以是用于执行第二逻辑的进程,第二进程执行第二逻辑需要依赖于第一进程执行第一逻辑得到的数据(即第一数据),通过上述步骤S104,可以将第一进程执行第一逻辑得到的第一数据同步第二进程,以便第二进程基于该第一数据执行第二逻辑。
仍以游戏为例,上述第二进程可以是用于执行AI逻辑的进程,由于游戏中的AI执行逻辑依赖于游戏内由游戏逻辑产生的实体数据,因而,需要将由游戏逻辑进程(即第一进程)执行第一逻辑(即游戏逻辑)产生的数据(即第一数据)同步到第二进程(即AI执行逻辑进程)。
步骤S106,将第二进程基于第一数据执行第二逻辑得到的第二数据返回至第一进程,其中,第一进程基于第二数据执行第一逻辑。
具体地,第二进程基于第一进程执行第一逻辑产生的第一数据执行第二逻辑得到第二数据后,可以将第二数据返回至第一进程,以便第一进程基于第二进程的第二胡数据执行第一逻辑。
仍以游戏为例,为了使得游戏实体(例如,NPC人物)变得智能,以便更玩家更好地交互,游戏中NPC人物执行的动作依赖于人工智能算法的执行结果(即上述第二进程执行第二逻辑得到的第二胡数据)。
由上可知,在本申请实施例中,采用逻辑分离的方式,通过第一进程执行第一逻辑,并将第一进程执行第一逻辑得到的第一数据同步到第二进程,以便第二进程基于第一进程执行第一逻辑得到的第一数据执行第二逻辑,再将第二进程基于第一数据执行第二逻辑得到第二数据返回到第一进程,以便第一进程根据第二进程执行第二逻辑的执行结果执行第一逻辑,达到了通过数据同步的方式将相互依赖的多个逻辑使用不同的进程来执行的目的,从而实现了降低单个进程计算压力、提高系统稳定性的技术效果,进而解决了现有技术中,将游戏逻辑和AI逻辑通过一个进程来实现,增加了进程了计算量影响游戏流畅性的技术问题。
为了减少数据同步导致的系统消耗,可以对第一进程上数据进行分类,并根据数据变更频率的不同来采用不同的数据不同方式,例如,对于中低频数据采取实时同步的方式,即有修改发生立即同步;对于高频数据,采取周期性采样同步的方式,同步周期固定。因而,一种可选的实施例中,如图2所示,将第一数据同步到第二进程,可以包括如下步骤:
步骤S202,确定第一数据的类型,第一数据的类型包括如下任意之一:第一类型和第二类型,其中,第一类型用于表征数据变更的频率低于预设阈值,第二类型用于表征数据变更的频率高于等于预设阈值;
步骤S204,采用与第一数据的类型对应的同步方式将第一数据同步到第二进程。
具体地,在上述实施例中,第一类型用于表征第一进程执行第一逻辑时变更频率比较低的数据类型,第二类型用于表征第一进程执行第一逻辑时变更频率比较高的数据类型,在将第一进程执行第一逻辑得到的第一数据同步到第二进程的时候,可以将变更频率比较低的数据实时同步到第二进程,将变更频率比较高的数据以预设周期同步到第二进程。由此,基于上述实施例,作为一种可选的实施方式,上述步骤S204,采用与第一数据的类型对应的同步方式将第一数据同步到第二进程,可以包括:
步骤S2041,在第一数据的类型为第一类型的情况下,将第一数据实时同步到第二进程;
步骤S2043,在第一数据的类型为第二类型的情况下,将第一数据按照预设周期进行打包处理得到对应的数据包后同步到第二进程。
其中,对于低频数据,在将第一进程的数据实时同步第二进程的时候,第一进程与第二进程之间需要建立数据传输的通道,因而,作为一种可选的实施方式,如图3所示,在第一数据的类型为第一类型的情况下,将第一数据实时同步到第二进程,可以包括如下步骤:
步骤S302,建立第一进程与第二进程之间的路由通道;
步骤S304,通过路由通道将第一数据实时同步到第二进程。
具体地,对于一个应用,实际运行时,一般有多个第一进程和第二进程同时运行,且第一进程与第二进程可以并发执行,因而,在进行实时同步数据时,需要首先建立第一进程与第二进程之间用于同步第一数据的路由通道。
可选地,作为一种可选实施方式,如图3所示,建立第一进程与第二进程之间的路由通道,可以包括如下步骤:
步骤S3021,通过第二进程向第三进程发起数据请求,其中,数据请求用于请求第一进程上的第一数据;
步骤S3023,判断第三进程上是否存在第一数据;
步骤S3025,在第三进程上存在第一数据的情况下,直接将第一数据返回至第二进程;
步骤S3027,在第三进程上不存在第一数据的情况下,通过第三进程向第一进程请求第一数据,并将请求得到的第一数据返回至第二进程,并缓存到第三进程,其中,第一进程、第三进程和第二进程之间传输数据的通道为路由通道。
具体地,上述第三进程可以用于将第一进程执行第一逻辑的第一数据同步到第二进程,并第二进程基于第一数据执行第二逻辑的第二数据返回至第一进程的路由进程,在建立第一进程与第二进程之间的路由通道时,需要通过第二进程向第三进程发送请求获取第一数据的数据请求,如果第三进程上有待请求的第一数据,则直接将第一数据返回至第二进程,如果第三进程没有待请求的第一数据,则通过第三进程向第一进程请求第一数据,将请求到的第一数据缓存到第三进程本地,并将请求到的第一数据发送到第二进程。
可选地,作为一种可选的实施例,如图4所示,在第一数据的类型为第二类型的情况下,将第一数据按照预设周期进行打包处理得到对应的数据包后同步到第二进程,可以包括如下步骤:
步骤S402,获取第一进程在预设周期内更新的第一数据;
步骤S404,将第一进程在预设周期内更新的第一数据进行打包处理得到对应的数据包,并通过第三进程将数据包同步到第二进程。
具体地,在上述实施例中,对于第一进程上变更频率比较高的数据,可以按照固定的预设周期,进行数据的同步。
基于上述任意一种可选的装置实施例,作为一种可选的实施例,上述第一进程可以用于执行游戏逻辑,上述第二进程可以用于执行人工智能逻辑。
基于上述任意一种可选的装置实施例,作为一种可选的实施例,在将第二进程基于第一数据执行第二逻辑得到的第二数据返回至第一进程之前,上述方法还可以包括如下步骤:第二进程以多进程的方式执行第二逻辑。通过多进程结构执行第二逻辑,可以提高第二逻辑的计算能力。
作为一种优选的实施例,图5是根据本发明实施例的一种可选的游戏AI分布执行方案的架构示意图,如图5所示,包含以下几个部分:(1)游戏数据路由及管理单元:负责向AI执行单元同步游戏实体数据以及将AI执行单元的决策结果回传给游戏逻辑进程,同时监控AI执行单元,提供动态扩展及负载均衡功能。(2)AI执行单元:负责执行具体的AI逻辑,完成决策,通过RPC的方式将结果回传,AI执行单元本身是多进程结构,来提高AI执行逻辑的计算能力。(3)数据自动同步模块:在游戏逻辑进程、路由进程、AI执行进程之间同步游戏数据,游戏逻辑进程上的游戏数据自动同步到需要的AI执行进程上去。
通过上述实施例,将游戏AI执行逻辑与游戏执行逻辑分离,游戏逻辑进程不再执行AI逻辑,减少游戏逻辑执行与AI逻辑执行的依赖,AI执行采用多进程结构,支持自适应的动态扩展、动态负载均衡,同时具有易扩展性及高可用性。
如图5所示,游戏逻辑进程(例如,Game_1、Game_2、…Game_N)上的数据通过路由进程(例如,Mroute_1、Mroute_2、…Mroute_M)自动同步到对应的AI执行进程(例如,Receptor_1、Receptor_2、…Receptor_K、)上去,并将AI执行进程的执行结果以RPC的方式返回给游戏逻辑进程。在游戏中,Game进程上每一个AI实体会在其中一个Receptor进程上申请一个AI执行cell(协程),cell基于greenlet构建,cell是一个Looper(循环结构的执行逻辑),以特定的帧率来执行具体的AI逻辑。
可选地,图6是根据本发明实施例的一种可选的游戏AI分布执行方案的简化架构示意图,如图6所示,Mroute可以认为是Receptor supervisor(AI执行逻辑进程的管理进程),Receptor进程由Mroute进程按需创建。
需要说明的是,上述数据自动同步模块支持数据自动同步到需要的进程。游戏数据可以按被修改的频率来划分成中低频数据和高频数据,比如角色的id、角色的属性等属性中低频数据,游戏entity(实体)的位置、方向等属性高频数据,针对中低频数据和高频数据有不同的同步策略:对于中低频数据采取实时同步的方式,即有修改发生立即同步;对于高频数据,采取周期性采样同步的方式,同步周期固定,减少同步的消耗。
图7是根据本发明实施例的一种可选的中低频数据同步的示意图,如图7所示,中低频数据以树形结构进行组织,Game、Mroute、Receptor进程上都保存了这样一份树形数据,树中某个节点上的数据发生修改时,会自动由Game向Receptor方向进行同步,中间会经过Mroute,由Mroute来路由,当中低频数据发生修改时,会自动从Game向Receptor方向上进行同步,这是在已经建立了路由通道的前提下,才会发生,因为数据在未被使用的情况下也进行同步,会造成浪费。
图8是根据本发明实施例的一种可选的低频数据的同步时序示意图,上层业务逻辑在需要用数据的时候,调用GetRata获取指定的数据,由GetData获取到数据会在Receptor上缓存,同时建立了Game-Mroute-Receptor的路由连接,当数据发生变化时,会自动同步修改。如图8所示,对于中低频数据,Receptor进程调用GetData获取想要的数据,如果发现数据还没有据,则向Mroute请求同步数据,如果Mroute上有对应的数据,直接同步给Receptor,如果Mroute上也没有对应的数据,Mroute就会向Game请求同步数据,Game收到同步请求,将数据同步给Mroute,Mroute收到数据后更新本地的数据缓存,并将数据同步给Receptor,这样就完成了第一次数据同步以及数据路由通道的建立,之后的数据再更新,会自动同步到receptor进程。
容易注意的是,对于一些全局数据,在进程启动时会自动请求同步一次,对于游戏Entity及Scene,则在需要的时候再请求同步。
图9是根据本发明实施例的一种可选的高频数据的同步时序示意图,如图9所示,Game进程周期性将高频数据进行一次打包,然后发给Mroute进程,Mroute进程再将数据同步给需要的Receptor进程。
对于AI执行单元,Game上每一个AI实体会在Receptor上创建一个dtai(与AI实体对应的一个AI逻辑执行体),然后申请一个Cell来执行dtai,Cell基于greenlet构建,每个Cell跑着一个循环,以一定的帧率来执行AI逻辑。多个cell(协程)构成了一个pool(协程池),申请cell永远不会失败,除非内存满了,cell使用完之后会返还给Pool,可以供后面的dtai继续使用。图10是根据本发明实施例的一种可选的AI执行单元执行AI逻辑的流程图,在执行一个AI帧前后都会去处理远程过程调用(Remote Procedure Calls,简称PRC)调用。其中,对各个函数的功能说明如下:
步骤S1001/步骤S1003:ProcessPendingFunc函数:处理游戏逻辑进程发给AI执行单元的RPC;
步骤S1002:IsStop函数:是否停止AI执行;
步骤S1004:ExecFrame函数:执行一次AI帧,即遍历一次行为树,做出决策;
步骤S1005:RPCCall or GetRemoteData函数:从游戏逻辑进程上获得数据或者执行游戏逻辑进程上的RPC;
步骤S1006:SleepToWaitResult函数:等待结果(获取数据或者RPC),等待的同时sleep,即切换执行流到主协程;
步骤S1007:GetResultSwitch函数:远端结果返回,执行流由主协程切换到AI执行协程;
步骤S1008:SleepCoroutine函数:每一帧结束时进入sleep,执行流由AI执行协程切换主协程;
步骤S1009:0.15Timer函数:sleep唤醒定时器触发,执行流由主协程切换到AI执行协程;
步骤S1010:RPC or pending funcs函数:如果有外部的RPC请求,切换执行流到AI执行协程。
根据本发明实施例,还提供了一种用于实现上述数据的处理方法的装置实施例,图11是根据本发明实施例的一种数据的处理装置示意图,如图11所示,该装置包括:获取单元111、同步单元113和处理单元115。
其中,获取单元111,用于获取第一进程执行第一逻辑的得到的第一数据;
同步单元113,用于将第一数据同步到第二进程,其中,第二进程基于第一数据执行第二逻辑;
处理单元115,用于将第二进程基于第一数据执行第二逻辑得到的第二数据返回至第一进程,其中,第一进程基于第二数据执行第一逻辑。
此处需要说明的是,上述获取单元111、同步单元113和处理单元115对应于方法实施例中的步骤S102至S106,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述方法实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以在诸如一组计算机可执行指令的计算机系统中执行。
由上可知,在本申请实施例中,采用逻辑分离的方式,通过第一进程执行第一逻辑,通过获取单元111获取第一进程执行第一逻辑得到的第一数据,并通过同步单元113将第一进程执行第一逻辑得到的第一数据同步到第二进程,以便第二进程基于第一进程执行第一逻辑得到的第一数据执行第二逻辑,再通过处理单元115将第二进程基于第一数据执行第二逻辑得到第二数据返回到第一进程,以便第一进程根据第二进程执行第二逻辑的执行结果执行第一逻辑,达到了通过数据同步的方式将相互依赖的多个逻辑使用不同的进程来执行的目的,从而实现了降低单个进程计算压力、提高系统稳定性的技术效果,进而解决了现有技术中,将游戏逻辑和AI逻辑通过一个进程来实现,增加了进程了计算量影响游戏流畅性的技术问题。
在一种可选的实施例中,上述同步单元可以包括:确定模块,用于确定第一数据的类型,第一数据的类型包括如下任意之一:第一类型和第二类型,其中,第一类型用于表征数据变更的频率低于预设阈值,第二类型用于表征数据变更的频率高于等于预设阈值;同步模块,用于采用与第一数据的类型对应的同步方式将第一数据同步到第二进程。
在一种可选的实施例中,上述同步模块可以包括:第一同步子模块,用于在第一数据的类型为第一类型的情况下,将第一数据实时同步到第二进程;第二同步子模块,用于在第一数据的类型为第二类型的情况下,将第一数据按照预设周期进行打包处理得到对应的数据包后同步到第二进程。
在一种可选的实施例中,上述第一同步子模块还可以包括:建立子单元,用于建立第一进程与第二进程之间的路由通道;第一同步子单元,用于通过路由通道将第一数据实时同步到第二进程。
在一种可选的实施例中,上述建立子单元包括:发起子模块,用于通过第二进程向第三进程发起数据请求,其中,数据请求用于请求第一进程上的第一数据;判断子模块,用于判断第三进程上是否存在第一数据;第三同步子模块,用于在第三进程上存在第一数据的情况下,直接将第一数据返回至第二进程;第四同步子模块,用于在第三进程上不存在第一数据的情况下,通过第三进程向第一进程请求第一数据,并将请求得到的第一数据返回至第二进程,并缓存到第三进程,其中,第一进程、第三进程和第二进程之间传输数据的通道为路由通道。
在一种可选的实施例中,上述第二同步子模块包括:获取子单元,用于获取第一进程在预设周期内更新的第一数据;第二同步子单元,用于将第一进程在预设周期内更新的第一数据进行打包处理得到对应的数据包,并通过第三进程将数据包同步到第二进程。
基于上述任意一种可选的装置实施例,作为一种可选的实施例,上述第一进程可以用于执行游戏逻辑,上述第二进程可以用于执行人工智能逻辑。
基于上述任意一种可选的装置实施例,作为一种可选的实施例,上述装置还包括:执行单元,用于第二进程以多进程的方式执行第二逻辑。
根据本发明实施例,还提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述方法实施例中任意一项可选的或优选的数据的处理方法。
根据本发明实施例,还提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述方法实施例中任意一项可选的或优选的数据的处理方法。
根据本发明实施例,还提供了一种终端,包括:
一个或多个处理器,存储器,显示装置以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行上述方法实施例中任意一项可选的或优选的数据的处理方法。
上述的装置可以包括处理器和存储器,上述单元均可以作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
上述本申请实施例的顺序不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。
其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (12)
1.一种数据的处理方法,其特征在于,包括:
获取第一进程执行第一逻辑的得到的第一数据;
将所述第一数据同步到第二进程,其中,所述第二进程基于所述第一数据执行第二逻辑;
将所述第二进程基于所述第一数据执行所述第二逻辑得到的第二数据返回至所述第一进程,其中,所述第一进程基于所述第二数据执行所述第一逻辑。
2.根据权利要求1所述的方法,其特征在于,将所述第一数据同步到第二进程,包括:
确定所述第一数据的类型,所述第一数据的类型包括如下任意之一:第一类型和第二类型,其中,所述第一类型用于表征数据变更的频率低于预设阈值,所述第二类型用于表征数据变更的频率高于等于所述预设阈值;
采用与所述第一数据的类型对应的同步方式将所述第一数据同步到所述第二进程。
3.根据权利要求2所述的方法,其特征在于,采用与所述第一数据的类型对应的同步方式将所述第一数据同步到所述第二进程,包括:
在所述第一数据的类型为所述第一类型的情况下,将所述第一数据实时同步到所述第二进程;
在所述第一数据的类型为所述第二类型的情况下,将所述第一数据按照预设周期进行打包处理得到对应的数据包后同步到所述第二进程。
4.根据权利要求3所述的方法,其特征在于,在所述第一数据的类型为所述第一类型的情况下,将所述第一数据实时同步到所述第二进程,包括:
建立所述第一进程与所述第二进程之间的路由通道;
通过所述路由通道将所述第一数据实时同步到所述第二进程。
5.根据权利要求4所述的方法,其特征在于,建立所述第一进程与所述第二进程之间的路由通道,包括:
通过所述第二进程向第三进程发起数据请求,其中,所述数据请求用于请求所述第一进程上的第一数据;
判断所述第三进程上是否存在所述第一数据;
在所述第三进程上存在所述第一数据的情况下,直接将所述第一数据返回至所述第二进程;
在所述第三进程上不存在所述第一数据的情况下,通过所述第三进程向所述第一进程请求所述第一数据,并将请求得到的所述第一数据返回至所述第二进程,并缓存到所述第三进程,其中,所述第一进程、第三进程和所述第二进程之间传输数据的通道为所述路由通道。
6.根据权利要求5所述的方法,其特征在于,在所述第一数据的类型为所述第二类型的情况下,将所述第一数据按照预设周期进行打包处理得到对应的数据包后同步到所述第二进程,包括:
获取所述第一进程在所述预设周期内更新的第一数据;
将所述第一进程在所述预设周期内更新的第一数据进行打包处理得到对应的数据包,并通过所述第三进程将所述数据包同步到所述第二进程。
7.根据权利要求1至6中任意一项所述的方法,其特征在于,所述第一进程用于执行游戏逻辑,所述第二进程用于执行人工智能逻辑。
8.根据权利要求7所述的方法,其特征在于,在将所述第二进程基于所述第一数据执行所述第二逻辑得到的第二数据返回至所述第一进程之前,所述方法还包括:
所述第二进程以多进程的方式执行所述第二逻辑。
9.一种数据的处理装置,其特征在于,包括:
获取单元,用于获取第一进程执行第一逻辑的得到的第一数据;
同步单元,用于将所述第一数据同步到第二进程,其中,所述第二进程基于所述第一数据执行第二逻辑;
处理单元,用于将所述第二进程基于所述第一数据执行所述第二逻辑得到的第二数据返回至所述第一进程,其中,所述第一进程基于所述第二数据执行所述第一逻辑。
10.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1至8任意一项所述的数据的处理方法。
11.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至8中任意一项所述的数据的处理方法。
12.一种终端,其特征在于,包括:
一个或多个处理器,存储器,显示装置以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行权利要求1至8中任意一项所述的数据的处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810242035.4A CN108404415B (zh) | 2018-03-22 | 2018-03-22 | 数据的处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810242035.4A CN108404415B (zh) | 2018-03-22 | 2018-03-22 | 数据的处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108404415A true CN108404415A (zh) | 2018-08-17 |
CN108404415B CN108404415B (zh) | 2021-07-23 |
Family
ID=63133160
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810242035.4A Active CN108404415B (zh) | 2018-03-22 | 2018-03-22 | 数据的处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108404415B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109847366A (zh) * | 2019-01-29 | 2019-06-07 | 腾讯科技(深圳)有限公司 | 用于游戏的数据处理方法和装置 |
CN112073335A (zh) * | 2020-09-03 | 2020-12-11 | 深圳市掌易文化传播有限公司 | 大数据支持下的游戏数据连接卡顿处理系统及方法 |
WO2021008257A1 (zh) * | 2019-07-15 | 2021-01-21 | 北京一流科技有限公司 | 协处理器及其数据处理加速方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102104600A (zh) * | 2011-01-11 | 2011-06-22 | 广州懒游网络技术有限公司 | 分布插件式游戏服务器平台及其协同工作方法 |
EP2722085A1 (en) * | 2012-10-18 | 2014-04-23 | Bigpoint Inc. | Online game system, method, and computer-readable medium |
CN106302340A (zh) * | 2015-05-25 | 2017-01-04 | 广州四三九九信息科技有限公司 | 服务器场景管理方法 |
-
2018
- 2018-03-22 CN CN201810242035.4A patent/CN108404415B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102104600A (zh) * | 2011-01-11 | 2011-06-22 | 广州懒游网络技术有限公司 | 分布插件式游戏服务器平台及其协同工作方法 |
EP2722085A1 (en) * | 2012-10-18 | 2014-04-23 | Bigpoint Inc. | Online game system, method, and computer-readable medium |
CN106302340A (zh) * | 2015-05-25 | 2017-01-04 | 广州四三九九信息科技有限公司 | 服务器场景管理方法 |
Non-Patent Citations (1)
Title |
---|
云风: "多进程的游戏服务器设计", 《HTTPS://BLOG.CODINGNOW.COM/2006/10/MULTI_PROCESS_DESIGN.HTML》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109847366A (zh) * | 2019-01-29 | 2019-06-07 | 腾讯科技(深圳)有限公司 | 用于游戏的数据处理方法和装置 |
WO2021008257A1 (zh) * | 2019-07-15 | 2021-01-21 | 北京一流科技有限公司 | 协处理器及其数据处理加速方法 |
CN112073335A (zh) * | 2020-09-03 | 2020-12-11 | 深圳市掌易文化传播有限公司 | 大数据支持下的游戏数据连接卡顿处理系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108404415B (zh) | 2021-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102322941B1 (ko) | 기계 학습 주도 리소스 할당 | |
CN101335916B (zh) | 一种通用的手机角色扮演(rpg)网络游戏引擎 | |
CN108404415A (zh) | 数据的处理方法和装置 | |
CN112015536B (zh) | Kubernetes集群容器组调度方法、装置及介质 | |
US6315668B1 (en) | System and method for networking video games | |
US20040116186A1 (en) | Distance based distributed online game server system | |
CN113692021B (zh) | 一种基于亲密度的5g网络切片智能资源分配方法 | |
CN103889524B (zh) | 信息处理系统、信息处理方法、信息处理程序、存储信息处理程序的计算机可读记录介质、数据结构、信息处理服务器和信息处理终端 | |
CN109902820A (zh) | Ai模型训练方法、装置、存储介质及设备 | |
KR20210097205A (ko) | 대규모 멀티 플레이어 컴퓨트 | |
CN110170171A (zh) | 一种目标对象的控制方法及装置 | |
CN109525626A (zh) | Cdn网络功能虚拟化的管理方法、装置及系统 | |
Huang et al. | Enabling DNN acceleration with data and model parallelization over ubiquitous end devices | |
CN114492052A (zh) | 一种全局流级别网络仿真方法、系统及装置 | |
CN112073237A (zh) | 一种云边架构中大规模目标网络构建方法 | |
CN109857439B (zh) | 一种游戏版本的更新方法及装置 | |
CN103974344B (zh) | 业务带宽实时变更方法、设备及系统 | |
CN104765644B (zh) | 基于智能体Agent的资源协作演化系统及方法 | |
CN110147277A (zh) | 一种资源动态部署方法、装置、服务器及存储介质 | |
CN111359213B (zh) | 用于控制游戏对局中的虚拟玩家的方法和设备 | |
CN107172222A (zh) | 一种基于分布式存储系统的数据存储方法及装置 | |
CN106775942A (zh) | 一种云应用导向的固态盘缓存管理系统及方法 | |
CN105978746B (zh) | 游戏服务器集群系统及提高游戏空间服务方法 | |
CN116367190A (zh) | 一种面向6g移动网络的数字孪生功能虚拟化方法 | |
CN103685180B (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 |