CN111459626B - 一种用于实现不分线无缝游戏世界的方法和装置 - Google Patents
一种用于实现不分线无缝游戏世界的方法和装置 Download PDFInfo
- Publication number
- CN111459626B CN111459626B CN202010165979.3A CN202010165979A CN111459626B CN 111459626 B CN111459626 B CN 111459626B CN 202010165979 A CN202010165979 A CN 202010165979A CN 111459626 B CN111459626 B CN 111459626B
- Authority
- CN
- China
- Prior art keywords
- logic
- thread
- data
- role
- executed
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/80—Special adaptations for executing a specific game genre or game mode
- A63F13/843—Special adaptations for executing a specific game genre or game mode involving concurrently two or more players on the same game device, e.g. requiring the use of a plurality of controllers or of a specific view of game data for each player
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock detection or avoidance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本申请提供了一种用于实现不分线无缝游戏世界的方法和装置,该方法包括:将多人在线游戏的服务器中每帧都需执行的计算逻辑归纳为多个逻辑类别,并根据所述多个逻辑类别,确定线程池对应的多个阶段;线程池在每帧中根据所述多个阶段来按阶段执行,其中,当一个阶段开始,线程池激活所有线程,每个线程执行当前阶段对应的逻辑类别中的计算逻辑,且当执行完当前阶段对应的计算逻辑后,检测本线程的无锁队列中是否有等待异步执行的异步逻辑数据,若有则执行所述异步逻辑数据以进行数据同步,当每个线程均执行完当前阶段对应的计算逻辑并且每个线程都不存在等待异步执行的异步逻辑时,开始下一个阶段,直至所述多个阶段执行完毕。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种用于实现不分线无缝游戏世界的技术方案。
背景技术
现有技术中,MMORPG(Massive Multiplayer Online Role-Playing Game,多人在线游戏)通常仅能通过分线来在一个场景中承载大量玩家。分线是指将切分后的每个地图场景再复制出多个一模一样的附属地图场景分别运行在不同的场景服务进程或者线程中,基于分线来在一个场景中承载大量玩家的方案,在相同位置,不同线的人相互看不到对方,玩家如果想在同一个地方看到对方,必须约定登陆进同一个线或者选择切换到同一个线,这无疑会给玩家带来诸多不便,游戏体验较差。
发明内容
本申请的目的是提供一种用于实现不分线无缝游戏世界的技术方案。
根据本申请的一个实施例,提供一种用于实现不分线无缝游戏世界的方法,其中,所述方法包括:
将多人在线游戏的服务器中每帧都需执行的计算逻辑归纳为多个逻辑类别,并根据所述多个逻辑类别,确定线程池对应的多个阶段;
线程池在每帧中根据所述多个阶段来按阶段执行,其中,当一个阶段开始,线程池激活所有线程,每个线程执行当前阶段对应的逻辑类别中的计算逻辑,且当执行完当前阶段对应的计算逻辑后,检测本线程的无锁队列中是否有等待异步执行的异步逻辑数据,若有则执行所述异步逻辑数据以进行数据同步,当每个线程均执行完当前阶段对应的计算逻辑并且每个线程都不存在等待异步执行的异步逻辑时,开始下一个阶段,直至所述多个阶段执行完毕。
根据本申请的另一个实施例,还提供了一种用于实现不分线无缝游戏世界的装置,其中,所述装置包括:
将多人在线游戏的服务器中每帧都需执行的计算逻辑归纳为多个逻辑类别,并根据所述多个逻辑类别,确定线程池对应的多个阶段;
线程池在每帧中根据所述多个阶段来按阶段执行,其中,当一个阶段开始,线程池激活所有线程,每个线程执行当前阶段对应的逻辑类别中的计算逻辑,且当执行完当前阶段对应的计算逻辑后,检测本线程的无锁队列中是否有等待异步执行的异步逻辑数据,若有则执行所述异步逻辑数据以进行数据同步,当每个线程均执行完当前阶段对应的计算逻辑并且每个线程都不存在等待异步执行的异步逻辑时,开始下一个阶段,直至所述多个阶段执行完毕。
根据本申请的另一个实施例,还提供了一种设备,其中,所述设备包括:存储器,用于存储一个或多个程序;一个或多个处理器,与所述存储器相连,当所述一个或多个程序被所述一个或者多个处理器执行时,使得所述一个或多个处理器执行如下操作:
一种用于实现不分线无缝游戏世界的方法,其中,所述方法包括:
将多人在线游戏的服务器中每帧都需执行的计算逻辑归纳为多个逻辑类别,并根据所述多个逻辑类别,确定线程池对应的多个阶段;
线程池在每帧中根据所述多个阶段来按阶段执行,其中,当一个阶段开始,线程池激活所有线程,每个线程执行当前阶段对应的逻辑类别中的计算逻辑,且当执行完当前阶段对应的计算逻辑后,检测本线程的无锁队列中是否有等待异步执行的异步逻辑数据,若有则执行所述异步逻辑数据以进行数据同步,当每个线程均执行完当前阶段对应的计算逻辑并且每个线程都不存在等待异步执行的异步逻辑时,开始下一个阶段,直至所述多个阶段执行完毕。
根据本申请的另一个实施例,还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序可被处理器执行如下操作:
一种用于实现不分线无缝游戏世界的方法,其中,所述方法包括:
将多人在线游戏的服务器中每帧都需执行的计算逻辑归纳为多个逻辑类别,并根据所述多个逻辑类别,确定线程池对应的多个阶段;
线程池在每帧中根据所述多个阶段来按阶段执行,其中,当一个阶段开始,线程池激活所有线程,每个线程执行当前阶段对应的逻辑类别中的计算逻辑,且当执行完当前阶段对应的计算逻辑后,检测本线程的无锁队列中是否有等待异步执行的异步逻辑数据,若有则执行所述异步逻辑数据以进行数据同步,当每个线程均执行完当前阶段对应的计算逻辑并且每个线程都不存在等待异步执行的异步逻辑时,开始下一个阶段,直至所述多个阶段执行完毕。
与现有技术相比,本申请具有以下优点:能够将多人在线游戏的服务器中每帧都需执行的计算逻辑归纳为多个逻辑类别,并根据所述多个逻辑类别,确定线程池对应的多个阶段,之后使线程池每帧按阶段执行,由于只有在阶段切换时才同步不同线程间的数据,使得能极大地降低同步数,以有限的阶段同步数去最大限度的利用CPU(centralprocessing unit,中央处理器)多核性能,并且,通过在多人在线游戏中按帧按阶段同步线程间逻辑,能够充分利用好每个线程的顺序执行能力,尽可能的减少线程之间的锁的行为,且进一步地通过使用无锁队列来用于线程间的数据传递,能够实现数据同步并保证同步效率和安全性,从而达到不分线来实现多人在线游戏无缝世界的目的,提高玩家的游戏真实体验;此外,通过使用本申请中关于计算逻辑相关类的编程规范,也即计算逻辑中的数据和方法的相关规范,能够以简单的规范实现在多线程间降低数据交互量的技术目的,以实现具有更高的实时交互效率的不分线无缝世界,进一步提高玩家的游戏真实体验。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出了本申请一个实施例的用于实现不分线无缝游戏世界的方法的流程示意图;
图2示出了本申请一个实施例的用于实现不分线无缝游戏世界的装置的结构示意图;
图3示出了可被用于实施本申请中所述的各个实施例的示例性系统。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
在上下文中所称“设备”,是指可以通过运行预定程序或指令来执行数值计算和/或逻辑计算等预定处理过程的智能电子设备,其可以包括处理器与存储器,由处理器执行在存储器中预存的程序指令来执行预定处理过程,或是由专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)等硬件执行预定处理过程,或是由上述二者组合来实现。
本申请的技术方案主要由计算机设备来实现。其中,所述计算机设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(Cloud Computing)的由大量计算机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。其中,所述计算机设备可单独运行来实现本申请,也可接入网络并通过与网络中的其他计算机设备的交互操作来实现本申请。其中,所述计算机设备所处的网络包括但不限于互联网、广域网、城域网、局域网、VPN网络、无线自组织网络(Ad Hoc网络)等。
需要说明的是,上述计算机设备仅为举例,其他现有的或今后可能出现的计算机设备如可适用于本申请,也应包含在本申请保护范围以内,并以引用方式包含于此。
本文后面所讨论的方法(其中一些通过流程图示出)可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或者其任意组合来实施。当用软件、固件、中间件或微代码来实施时,用以实施必要任务的程序代码或代码段可以被存储在机器或计算机可读介质(比如存储介质)中。(一个或多个)处理器可以实施必要的任务。
这里所公开的具体结构和功能细节仅仅是代表性的,并且是用于描述本申请的示例性实施例的目的。但是本申请可以通过许多替换形式来具体实现,并且不应当被解释成仅仅受限于这里所阐述的实施例。
应当理解的是,虽然在这里可能使用了术语“第一”、“第二”等等来描述各个单元,但是这些单元不应当受这些术语限制。使用这些术语仅仅是为了将一个单元与另一个单元进行区分。举例来说,在不背离示例性实施例的范围的情况下,第一单元可以被称为第二单元,并且类似地第二单元可以被称为第一单元。这里所使用的术语“和/或”包括其中一个或更多所列出的相关联项目的任意和所有组合。
这里所使用的术语仅仅是为了描述具体实施例而不意图限制示例性实施例。除非上下文明确地另有所指,否则这里所使用的单数形式“一个”、“一项”还意图包括复数。还应当理解的是,这里所使用的术语“包括”和/或“包含”规定所陈述的特征、整数、步骤、操作、单元和/或组件的存在,而不排除存在或添加一个或更多其他特征、整数、步骤、操作、单元、组件和/或其组合。
还应当提到的是,在一些替换实现方式中,所提到的功能/动作可以按照不同于附图中标示的顺序发生。举例来说,取决于所涉及的功能/动作,相继示出的两幅图实际上可以基本上同时执行或者有时可以按照相反的顺序来执行。
下面结合附图对本申请作进一步详细描述。
在描述本申请的方案之前,首先对本申请上下文中提及的一些概念进行如下解释:1)本申请的方案主要由多人在线游戏的服务器来实施;在一些实施例中,多人在线游戏的服务器包括主服务器以及分别用于处理不同业务数据的多种服务器,本实施例的方案主要由用于处理战斗业务数据的战斗服务器来实施;2)本申请中所涉及的帧均是指多人在线游戏的服务器端的帧(也称为服务器帧),服务器端的帧仅在服务器上运行,代表了服务器的运行逻辑,需要说明的是,服务器端的帧与客户端的渲染帧是完全不同的概念;3)本申请中所述的角色是指多人在线游戏中角色,包括但不限于玩家和NPC(Non-PlayerCharacter,非玩家角色),角色数据逻辑是指与角色对应的角色数据相关的逻辑,如与角色属性相关的计算逻辑,角色逻辑类别是指对角色数据逻辑进行归纳得到的逻辑类别;4)本申请中所述的场景是指多人在线游戏中的游戏场景,如游戏中某块地图中的某一个战斗场景,管理数据逻辑是指与场景对应的管理数据相关的逻辑,通常为与场景相关的全局逻辑,如控制场景中的NPC数量的逻辑、给进入此场景的玩家加buff(增益)的逻辑等,管理逻辑类别是指对管理数据逻辑进行归纳得到的逻辑类别。
图1示出了本申请一个实施例的用于实现不分线无缝游戏世界的方法的流程示意图。本实施例的方法包括步骤S11和步骤S12。在步骤S11中,将多人在线游戏的服务器中每帧都需执行的计算逻辑归纳为多个逻辑类别,并根据所述多个逻辑类别,确定线程池对应的多个阶段;在步骤S12中,线程池在每帧中根据所述多个阶段来按阶段执行,其中,当一个阶段开始,线程池激活所有线程,每个线程执行当前阶段对应的逻辑类别中的计算逻辑,且当执行完当前阶段对应的计算逻辑后,检测本线程的无锁队列中是否有等待异步执行的异步逻辑数据,若有则执行所述异步逻辑数据以进行数据同步,当每个线程均执行完当前阶段对应的计算逻辑并且每个线程都不存在等待异步执行的异步逻辑时,开始下一个阶段,直至所述多个阶段执行完毕。
在步骤S11中,将多人在线游戏的服务器中每帧都需执行的计算逻辑归纳为多个逻辑类别,并根据所述多个逻辑类别,确定线程池对应的多个阶段。
在一些实施例中,在所述步骤S11之前创建线程池,所述线程池中的线程数是固定的,创建线程池的实现方式将在后续实施例中予以详述;在一些实施例中,所述线程池用于执行每帧都需执行的计算逻辑(也即需要按固定频率去执行的动态逻辑),而并非每帧都需执行的逻辑由于对实时性要求不高,可分配到所述线程池以外的线程去执行。
在一些实施例中,将服务器中每帧都需执行的计算逻辑中属于相同类别的计算逻辑归纳为一个逻辑类别,例如,每帧都需执行的计算逻辑有M个,将该M个计算逻辑中属于相同类别的计算逻辑归纳为一个逻辑类别,得到N个逻辑类别,M大于N。在一些实施例中,一个逻辑类别下的计算逻辑访问的属性都有相似性,不同的逻辑类别访问的属性是不同或不相似的。在一些实施例中,通过归纳操作,能够将各种计算逻辑(战斗交互数据相关逻辑)的管理器(比如AI管理器,技能管理器等)按照线程池中线程的数量,实现成多线程安全的管理器,以使不同线程对该管理器的访问都具备数据安全性。
在一些实施例中,根据归纳得到的多个逻辑类别,来定义线程池的阶段数,其中,线程池的阶段数小于等于逻辑类别的数量,一个逻辑类别唯一绑定一个阶段;优选地,一个阶段也唯一对应一个逻辑类别;根据所述多个逻辑类别,确定线程池对应的多个阶段,也即相当于将所述多个逻辑类别划分为多个阶段,以实现逻辑类别与阶段之间的绑定。在一些实施例中,阶段划分的依据是逻辑类别是否相同,或者说,逻辑访问的属性是否具备相同性或相似性。作为一个示例,将多人在线游戏中每帧都需执行的计算逻辑归纳为N个逻辑类别,之后根据该N个逻辑类别定义线程池的N个阶段,其中,每个阶段唯一对应一个逻辑类别。在一些实施例中,所述多个阶段的执行顺序,以及每个阶段绑定的逻辑类别中所包含的各个计算逻辑的执行顺序都是固定的,上述顺序是按多人在线游戏的设计逻辑来确定的,也即多人在线游戏的设计逻辑决定了阶段的划分和阶段内计算逻辑的顺序,多人在线游戏的设计逻辑是指游戏类别、玩法等带来的策划和程序上的设计。
在步骤S12中,线程池在每帧中根据所述多个阶段来按阶段执行,其中,当一个阶段开始,线程池激活所有线程,每个线程执行当前阶段对应的逻辑类别中的计算逻辑,且当执行完当前阶段对应的计算逻辑后,检测本线程的无锁队列中是否有等待异步执行的异步逻辑数据,若有则执行所述异步逻辑数据以进行数据同步,当每个线程均执行完当前阶段对应的计算逻辑并且每个线程都不存在等待异步执行的异步逻辑时,开始下一个阶段,直至所述多个阶段执行完毕。线程池按阶段执行的目的,是为了减少不同线程间的数据同步次数;在一个阶段内,各线程需执行相同的逻辑,否则无法做到不需要用锁的方式实现数据同步;在每个阶段内每个线程需要完成自己内部的数据修改以及用无锁队列完成跨线程的数据修改(即同步)。
在一些实施例中,每帧中,每个线程在同一个阶段中执行同一个逻辑类别(也即执行相同逻辑),由于一个逻辑类别下的计算逻辑访问的属性都有相似性,因此,同一类别的计算逻辑执行完之后,在之后的阶段中就不会修改相关属性,从而使得各个线程都可以直接访问相关属性,而不需要加锁同步,也即,本申请能够通过把贯穿整个阶段的属性修改放到一个阶段去执行完,以使后续其他阶段可以直接访问这些属性,而不需要加锁同步。
在一些实施例中,使用无锁队列来用于线程间的数据传递,以实现数据同步并保证速度和安全性;无锁队列用于将计算逻辑放到其所在的线程去执行,能够在需要不同线程去修改数据时,把修改行为转移到数据所在线程去修改,以在不同线程间访问共享数据时实现数据同步,避免了不同线程修改共享数据。
在一些实施例中,所述异步逻辑数据是指需要本线程异步执行的逻辑数据,当线程池中一个线程需要通过一个公共函数接口访问共享数据时,若该公共接口函数的函数持有者并非该线程所绑定的角色,则该线程可将异步逻辑数据发送至该公共接口函数的函数持有者所绑定的另一个线程对应的无锁队列中,以由该线程调用该公共接口函数来修改共享数据,从而实现不同线程间访问共享数据时的同步;作为一个示例,线程池按帧按阶段执行,在一个阶段中,线程T1将需要由线程T2异步执行的异步逻辑数据放入到线程T2对应的无锁队列中,该异步逻辑数据包括公共接口函数F1及其传入参数M1和M2;线程T2在执行完当前阶段绑定的计算逻辑后,检测到其无锁队列中存在等待异步执行的该异步逻辑数据,则线程T2调用该公共接口函数F1来修改相应的数据,从而实现共享数据的同步。
作为步骤S12的一个示例,线程池中包括K个线程,根据帧逻辑划分得到线程池对应的N个阶段,其中,每个阶段唯一对应一个逻辑类别,且一个逻辑类别唯一对应一个阶段,每个逻辑类别中包含多个计算逻辑,每个阶段对应的逻辑类别以及每个逻辑类别中的各个计算逻辑的执行顺序由多人在线游戏的设计逻辑来确定,则线程池在服务器每帧的运行逻辑如下:第一个阶段开始,线程池激活其中的K个线程,每个线程执行第一个阶段绑定的逻辑类别中的计算逻辑,当执行完第一个阶段对应的计算逻辑后,检测本线程的无锁队列中是否有等待异步执行的异步逻辑数据,若有则执行所述异步逻辑数据以进行数据同步;当每个线程均执行完第一个阶段对应的计算逻辑并且每个线程都不存在等待异步执行的异步逻辑时(也即每个线程的无锁队列中都不存在等待异步执行的异步逻辑数据),开始第二个阶段;第二个阶段开始后,线程池激活其中的K个线程,每个线程执行第二个阶段绑定的逻辑类别中的计算逻辑,当执行完第二个阶段对应的计算逻辑后,检测本线程的无锁队列中是否有等待异步执行的异步逻辑数据,若有则执行所述异步逻辑数据以进行数据同步;当每个线程均执行完第二个阶段对应的计算逻辑并且每个线程都不存在等待异步执行的异步逻辑时,开始第三个阶段;以此类推,直至N个阶段执行完毕。
在一些实施例中,所述方法还包括:创建所述线程池,其中,所述线程池中的线程数是根据CPU核心数确定的。例如,基于公式“Nthreads=Ncpu*Ucpu*(1+w/c)”来计算线程数,其中,Nthreads表示线程数,Ncpu表示CPU核心数,Ucpu表示CPU使用率,w表示等待时间,c表示计算时间;又例如,基于公式“线程数=CPU核心数/(1-阻塞系数)”来计算线程数。本申请并不限制根据CPU核心数确定线程池中的线程数的具体实现方式,任何能够用于根据CPU核心数确定线程池中的线程数的实现方式,均应包含在本申请的保护范围内。
在一些实施例中,所述步骤S11包括:将多人在线游戏的服务器中每帧都需执行的计算逻辑划分为管理数据逻辑和角色数据逻辑;将管理数据逻辑归纳为多个管理逻辑类别,将角色数据逻辑归纳为多个角色逻辑类别;根据所述多个管理逻辑类别和所述多个角色逻辑类别,确定线程池对应的多个阶段,其中,一个阶段对应一个管理逻辑类别和/或一个角色逻辑类别。在一些实施例中,角色逻辑类别的数量与管理逻辑类别的数量之和大于或等于阶段数;在一些实施例中,分阶段处理每个逻辑类别;在一些实施例中,角色逻辑类别和管理逻辑类别可以在同一个阶段重合。在一些实施例中,一个阶段可以唯一绑定一个管理逻辑类别,或者唯一绑定一个角色逻辑类别,或者绑定一个管理逻辑类别和一个角色逻辑类别;在一些实施例中,由于采用无锁队列来实现数据同步,为了保证数据安全,一个阶段不能同时绑定两个及以上角色逻辑类别,也不能同时绑定两个及以上管理逻辑类别。在一些实施例中,所述角色逻辑类别包括任何对与角色相关的计算逻辑进行归纳所得到的逻辑类别,所述管理逻辑类别包括任何对于场景相关的计算逻辑性归纳所得到的逻辑类别。
在一些实施例中,基于角色数据逻辑归纳的角色逻辑类别至少包括以下任一项:
1)属性计算逻辑
所述属性计算逻辑包括与角色属性相关的任何计算逻辑,如与角色力量相关的计算逻辑、与角色智力相关的计算逻辑等。
2)视野同步逻辑
所述视野同步逻辑包括与角色的视野同步相关的任何逻辑,如玩家移动时视野的变化逻辑等。
3)网络协议处理逻辑
所述网络协议处理逻辑包括与网络协议处理相关的任何逻辑。
4)战斗交互逻辑
所述战斗交互逻辑包括与战斗交互相关的任何逻辑,如与角色移动相关的逻辑、与技能释放相关的逻辑等。
需要说明的是,上述角色逻辑类别仅为举例,而非对本发明的限制,任何通过将访问的属性相同或相似或相关联的角色数据逻辑归为一类所获得的逻辑类别,均应包含在本申请所述的角色逻辑类别的范围内。
在一些实施例中,所述步骤S11还包括:将角色数据逻辑按照角色数量平分到线程池的各个线程中,其中,每个角色在生命周期内唯一绑定至一个线程;将管理数据逻辑按照场景数量平分到线程池的各个线程中,其中,每个场景在生命周期内唯一绑定至一个线程。在一些实施例中,以场景和角色为单位,将角色数据逻辑和管理数据逻辑评分平分到各个线程中,每个角色、每个场景在生命周期内都有唯一的绑定线程;作为一种具体实施方式,每当一个角色或一个场景的生命周期开始,便会唯一绑定至一个线程,在绑定时,可获取每个线程已绑定的角色数量和场景数量,并选择已绑定的角色数量和场景数量最少的线程去绑定。在一些实施例中,角色的生命周期以角色登入游戏或被场景创建出来为开始,以角色退出登录或离开场景或死亡为结束;可选地,可基于游戏设计来调整生命周期的定义,也可针对不同的角色设置不同的生命周期算法,如玩家和NPC可采用不同的生命周期算法,如玩家的生命周期以玩家登入游戏为开始并以玩家退出登录为结束,NPC的生命周期以被场景创建出来为开始以死亡为结束。在一些实施例中,场景的生命周期以场景的创建为开始,以创景的销毁为结束。
在一些实施例中,每个计算逻辑中的数据均为私有,数据的访问只能通过接口函数去实现。例如,角色数据逻辑基于数据和方法(也即接口函数)去实现,由于数据是私有的,因此,仅能角色本身访问,也即只有数据所在的线程才有权限修改该数据,或者说,所有的数据修改都在各自线程内。在一些实施例中,若在不同线程间访问共享数据(也即有数据在不同线程间被同时修改),则需要数据同步,而由于数据都是私有的,只有数据所在的线程才有权限修改该数据,则可在需要数据同步时,将数据修改需求(也即异步逻辑数据)放入需要修改的数据所在的线程对应的无锁队列中,以使数据所在线程自己去修改该数据,数据所在线程完成修改之后可与其他线程共享修改后的数据,基于此,也就实现了不同线程间的数据同步,该实现方式能够避免由于不同线程修改共享数据而影响共享数据的安全性。例如,线程池包括线程T1和线程T2,线程T2不能直接改T1线程的数据,若线程T2需要修改T1中的数据,即需要数据同步,线程T2必须通过将数据修改需求放入线程T1对应的无锁队列中,以使线程T1自己去修改该数据,线程T1修改该数据之后,可与线程T2共享修改后的数据,由此也即实现了线程T1和线程T2之间的数据同步。
在一些实施例中,所述每个线程执行当前阶段对应的逻辑类别中的计算逻辑,包括:对于角色逻辑类别中的每个计算逻辑,执行该计算逻辑中的接口函数,以访问该计算逻辑中的数据。在一些实施例中,角色数据逻辑的方法按照方法前缀,分为私有方法和公共方法;私有方法仅在角色所绑定的线程中调用,只有公共方法才会在不同线程间调用,从而产生多线程之间的数据交互。
在一些实施例中,所述对于角色逻辑类别中的每个计算逻辑,执行该计算逻辑中的接口函数,以访问该计算逻辑中的数据,包括:对于角色逻辑类别中的每个计算逻辑,在执行该计算逻辑中的公共接口函数时,检测当前执行的线程是否为角色所绑定的线程;若是,继续执行该公共接口函数,以访问该计算逻辑中的数据;若否,将异步逻辑数据发送到角色所绑定的线程的无锁队列中以等待异步执行,其中,所述异步逻辑数据包括该公共接口函数及该公共接口函数对应的传入参数。所述公共接口函数也即相当于公共方法。在一些实施例中,检测当前执行的线程是否为角色所绑定的线程,也即对接口函数进行线程安全检查,作为一种具体实现方式,在每个阶段中,接口函数在开始执行时,需判断当前的函数调用线程是否为在函数持有者所在线程,从而确定当前阶段的执行是否线程安全;如安全,继续执行;如不安全,要实现将接口函数真正逻辑和参数打包到函数持有者所在线程的无锁队列中,等待异步执行。作为一个示例,一个公共接口函数的函数持有者为角色A,线程T1调用该公共接口函数时,先判断线程T1是否为该公共接口函数的角色A所绑定的线程,若是,线程T1继续执行该公共接口函数,若否,将该公共接口函数以及其传入参数打包到角色A所绑定的线程的无锁队列中,等待异步执行。通过在检测到当前执行的线程并非角色所绑定的线程时转为异步执行,能够在不采用锁的情况下保证数据安全。
需要说明的是,场景的数据同样是私有的,但不同场景之间并不会发生交互;由于一个场景在其生命周期内被唯一绑定至一个线程,因此,并不会存在场景数据的跨线程调用。
现有技术中,MMORPG通常仅能通过分线来在一个场景中承载大量玩家。分线是指将切分后的每个地图场景再复制出多个一模一样的附属地图场景分别运行在不同的场景服务进程或者线程中,基于分线来在一个场景中承载大量玩家的方案,在相同位置,不同线的人相互看不到对方,玩家若在同一个地方看到对方,必须约定登陆进同一个线或者选择切换到同一个线,这无疑会给玩家带来诸多不便,游戏体验较差。
本申请发现,现有技术中通常选择分线来在一个场景中承载大量玩家是因为,若不分线,服务器在每帧计算内要在不同线程间同步大量玩家(如几千个甚至上万个)的数据,而同步量越大效率就越低,程序复杂性就越高,编程就更困难。
根据本实施例的方案,能够将多人在线游戏的服务器中每帧都需执行的计算逻辑归纳为多个逻辑类别,并根据所述多个逻辑类别,确定线程池对应的多个阶段,之后使线程池每帧按阶段执行,由于只有在阶段切换时才同步不同线程间的数据,使得能极大地降低同步数,以有限的阶段同步数去最大限度的利用CPU多核性能,并且,通过在多人在线游戏的服务器中按帧按阶段同步线程间逻辑,能够充分利用好每个线程的顺序执行能力,尽可能的减少线程之间的锁的行为,且进一步地通过使用无锁队列来用于线程间的数据传递,能够实现数据同步并保证同步效率和安全性,从而达到不分线来实现多人在线游戏无缝世界的目的,提高玩家的游戏真实体验;此外,通过使用本申请中关于计算逻辑相关类的编程规范,也即计算逻辑中的数据和方法的相关规范,能够以简单的规范提供一种多线程间降低数据交互量的算法,以实现在多线程间降低数据交互量的技术目的,从而进一步提高不分线无缝世界中实时交互的效率以及玩家的游戏真实体验。
图2示出了本申请一个实施例的用于实现不分线无缝游戏世界的装置的结构示意图。该用于实现不分线无缝游戏世界的装置(以下简称为不分线装置)包括第一装置11和第二装置12。
所述第一装置11用于将多人在线游戏的服务器中每帧都需执行的计算逻辑归纳为多个逻辑类别,并根据所述多个逻辑类别,确定线程池对应的多个阶段。
在一些实施例中,在所述第一装置11执行操作之前创建线程池,所述线程池中的线程数是固定的,创建线程池的实现方式将在后续实施例中予以详述;在一些实施例中,所述线程池用于执行每帧都需执行的计算逻辑(也即需要按固定频率去执行的动态逻辑),而并非每帧都需执行的逻辑由于对实时性要求不高,可分配到所述线程池以外的线程去执行。
在一些实施例中,将服务器中每帧都需执行的计算逻辑中属于相同类别的计算逻辑归纳为一个逻辑类别,例如,每帧都需执行的计算逻辑有M个,将该M个计算逻辑中属于相同类别的计算逻辑归纳为一个逻辑类别,得到N个逻辑类别,M大于N。在一些实施例中,一个逻辑类别下的计算逻辑访问的属性都有相似性,不同的逻辑类别访问的属性是不同或不相似的。在一些实施例中,通过归纳操作,能够将各种计算逻辑(战斗交互数据相关逻辑)的管理器(比如AI管理器,技能管理器等)按照线程池中线程的数量,实现成多线程安全的管理器,以使不同线程对该管理器的访问都具备数据安全性。
在一些实施例中,根据归纳得到的多个逻辑类别,来定义线程池的阶段数,其中,线程池的阶段数小于等于逻辑类别的数量,一个逻辑类别唯一绑定一个阶段;优选地,一个阶段也唯一对应一个逻辑类别;根据所述多个逻辑类别,确定线程池对应的多个阶段,也即相当于将所述多个逻辑类别划分为多个阶段,以实现逻辑类别与阶段之间的绑定。在一些实施例中,阶段划分的依据是逻辑类别是否相同,或者说,逻辑访问的属性是否具备相同性或相似性。作为一个示例,将多人在线游戏中每帧都需执行的计算逻辑归纳为N个逻辑类别,之后根据该N个逻辑类别定义线程池的N个阶段,其中,每个阶段唯一对应一个逻辑类别。在一些实施例中,所述多个阶段的执行顺序,以及每个阶段绑定的逻辑类别中所包含的各个计算逻辑的执行顺序都是固定的,上述顺序是按多人在线游戏的设计逻辑来确定的,也即多人在线游戏的设计逻辑决定了阶段的划分和阶段内计算逻辑的顺序,多人在线游戏的设计逻辑是指游戏类别、玩法等带来的策划和程序上的设计。
所述第二装置12用于使线程池在每帧中根据所述多个阶段来按阶段执行,其中,当一个阶段开始,线程池激活所有线程,每个线程执行当前阶段对应的逻辑类别中的计算逻辑,且当执行完当前阶段对应的计算逻辑后,检测本线程的无锁队列中是否有等待异步执行的异步逻辑数据,若有则执行所述异步逻辑数据以进行数据同步,当每个线程均执行完当前阶段对应的计算逻辑并且每个线程都不存在等待异步执行的异步逻辑时,开始下一个阶段,直至所述多个阶段执行完毕。线程池按阶段执行的目的,是为了减少不同线程间的数据同步次数;在一个阶段内,各线程需执行相同的逻辑,否则无法做到不需要用锁的方式实现数据同步;在每个阶段内每个线程需要完成自己内部的数据修改以及用无锁队列完成跨线程的数据修改(即同步)。
在一些实施例中,每帧中,每个线程在同一个阶段中执行同一个逻辑类别(也即执行相同逻辑),由于一个逻辑类别下的计算逻辑访问的属性都有相似性,因此,同一类别的计算逻辑执行完之后,在之后的阶段中就不会修改相关属性,从而使得各个线程都可以直接访问相关属性,而不需要加锁同步,也即,本申请能够通过把贯穿整个阶段的属性修改放到一个阶段去执行完,以使后续其他阶段可以直接访问这些属性,而不需要加锁同步。
在一些实施例中,使用无锁队列来用于线程间的数据传递,以实现数据同步并保证速度和安全性;无锁队列用于将计算逻辑放到其所在的线程去执行,能够在需要不同线程去修改数据时,把修改行为转移到数据所在线程去修改,以在不同线程间访问共享数据时实现数据同步,避免了不同线程修改共享数据。
在一些实施例中,所述异步逻辑数据是指需要本线程异步执行的逻辑数据,当线程池中一个线程需要通过一个公共函数接口访问共享数据时,若该公共接口函数的函数持有者并非该线程所绑定的角色,则该线程可将异步逻辑数据发送至该公共接口函数的函数持有者所绑定的另一个线程对应的无锁队列中,以由该线程调用该公共接口函数来修改共享数据,从而实现不同线程间访问共享数据时的同步;作为一个示例,线程池按帧按阶段执行,在一个阶段中,线程T1将需要由线程T2异步执行的异步逻辑数据放入到线程T2对应的无锁队列中,该异步逻辑数据包括公共接口函数F1及其传入参数M1和M2;线程T2在执行完当前阶段绑定的计算逻辑后,检测到其无锁队列中存在等待异步执行的该异步逻辑数据,则线程T2调用该公共接口函数F1来修改相应的数据,从而实现共享数据的同步。
作为一个示例,线程池中包括K个线程,根据帧逻辑划分得到线程池对应的N个阶段,其中,每个阶段唯一对应一个逻辑类别,且一个逻辑类别唯一对应一个阶段,每个逻辑类别中包含多个计算逻辑,每个阶段对应的逻辑类别以及每个逻辑类别中的各个计算逻辑的执行顺序由多人在线游戏的设计逻辑来确定,则线程池在服务器每帧的运行逻辑如下:第一个阶段开始,线程池激活其中的K个线程,每个线程执行第一个阶段绑定的逻辑类别中的计算逻辑,当执行完第一个阶段对应的计算逻辑后,检测本线程的无锁队列中是否有等待异步执行的异步逻辑数据,若有则执行所述异步逻辑数据以进行数据同步;当每个线程均执行完第一个阶段对应的计算逻辑并且每个线程都不存在等待异步执行的异步逻辑时(也即每个线程的无锁队列中都不存在等待异步执行的异步逻辑数据),开始第二个阶段;第二个阶段开始后,线程池激活其中的K个线程,每个线程执行第二个阶段绑定的逻辑类别中的计算逻辑,当执行完第二个阶段对应的计算逻辑后,检测本线程的无锁队列中是否有等待异步执行的异步逻辑数据,若有则执行所述异步逻辑数据以进行数据同步;当每个线程均执行完第二个阶段对应的计算逻辑并且每个线程都不存在等待异步执行的异步逻辑时,开始第三个阶段;以此类推,直至N个阶段执行完毕。
在一些实施例中,所述不分线装置还包括用于创建所述线程池的装置,其中,所述线程池中的线程数是根据CPU核心数确定的。例如,基于公式“Nthreads=Ncpu*Ucpu*(1+w/c)”来计算线程数,其中,Nthreads表示线程数,Ncpu表示CPU核心数,Ucpu表示CPU使用率,w表示等待时间,c表示计算时间;又例如,基于公式“线程数=CPU核心数/(1-阻塞系数)”来计算线程数。本申请并不限制根据CPU核心数确定线程池中的线程数的具体实现方式,任何能够用于根据CPU核心数确定线程池中的线程数的实现方式,均应包含在本申请的保护范围内。
在一些实施例中,所述第一装置11用于:将多人在线游戏的服务器中每帧都需执行的计算逻辑划分为管理数据逻辑和角色数据逻辑;将管理数据逻辑归纳为多个管理逻辑类别,将角色数据逻辑归纳为多个角色逻辑类别;根据所述多个管理逻辑类别和所述多个角色逻辑类别,确定线程池对应的多个阶段,其中,一个阶段对应一个管理逻辑类别和/或一个角色逻辑类别。在一些实施例中,角色逻辑类别的数量与管理逻辑类别的数量之和大于或等于阶段数;在一些实施例中,分阶段处理每个逻辑类别;在一些实施例中,角色逻辑类别和管理逻辑类别可以在同一个阶段重合。在一些实施例中,一个阶段可以唯一绑定一个管理逻辑类别,或者唯一绑定一个角色逻辑类别,或者绑定一个管理逻辑类别和一个角色逻辑类别;在一些实施例中,由于采用无锁队列来实现数据同步,为了保证数据安全,一个阶段不能同时绑定两个及以上角色逻辑类别,也不能同时绑定两个及以上管理逻辑类别。在一些实施例中,所述角色逻辑类别包括任何对与角色相关的计算逻辑进行归纳所得到的逻辑类别,所述管理逻辑类别包括任何对于场景相关的计算逻辑性归纳所得到的逻辑类别。在一些实施例中,基于角色数据逻辑归纳的角色逻辑类别至少包括以下任一项:
1)属性计算逻辑
所述属性计算逻辑包括与角色属性相关的任何计算逻辑,如与角色力量相关的计算逻辑、与角色智力相关的计算逻辑等。
2)视野同步逻辑
所述视野同步逻辑包括与角色的视野同步相关的任何逻辑,如玩家移动时视野的变化逻辑等。
3)网络协议处理逻辑
所述网络协议处理逻辑包括与网络协议处理相关的任何逻辑。
4)战斗交互逻辑
所述战斗交互逻辑包括与战斗交互相关的任何逻辑,如与角色移动相关的逻辑、与技能释放相关的逻辑等。
需要说明的是,上述角色逻辑类别仅为举例,而非对本发明的限制,任何通过将访问的属性相同或相似或相关联的角色数据逻辑归为一类所获得的逻辑类别,均应包含在本申请所述的角色逻辑类别的范围内。
在一些实施例中,所述第一装置11还用于:将角色数据逻辑按照角色数量平分到线程池的各个线程中,其中,每个角色在生命周期内唯一绑定至一个线程;将管理数据逻辑按照场景数量平分到线程池的各个线程中,其中,每个场景在生命周期内唯一绑定至一个线程。在一些实施例中,以场景和角色为单位,将角色数据逻辑和管理数据逻辑评分平分到各个线程中,每个角色、每个场景在生命周期内都有唯一的绑定线程;作为一种具体实施方式,每当一个角色或一个场景的生命周期开始,便会唯一绑定至一个线程,在绑定时,可获取每个线程已绑定的角色数量和场景数量,并选择已绑定的角色数量和场景数量最少的线程去绑定。在一些实施例中,角色的生命周期以角色登入游戏或被场景创建出来为开始,以角色退出登录或离开场景或死亡为结束;可选地,可基于游戏设计来调整生命周期的定义,也可针对不同的角色设置不同的生命周期算法,如玩家和NPC可采用不同的生命周期算法,如玩家的生命周期以玩家登入游戏为开始并以玩家退出登录为结束,NPC的生命周期以被场景创建出来为开始以死亡为结束。在一些实施例中,场景的生命周期以场景的创建为开始,以创景的销毁为结束。
在一些实施例中,每个计算逻辑中的数据均为私有。,数据的访问只能通过接口函数去实现。例如,角色数据逻辑基于数据和方法(也即接口函数)去实现,由于数据是私有的,因此,仅能角色本身访问,也即只有数据所在的线程才有权限修改该数据,或者说,所有的数据修改都在各自线程内。在一些实施例中,若在不同线程间访问共享数据(也即有数据在不同线程间被同时修改),则需要数据同步,而由于数据都是私有的,只有数据所在的线程才有权限修改该数据,则可在需要数据同步时,将数据修改需求(也即异步逻辑数据)放入需要修改的数据所在的线程对应的无锁队列中,以使数据所在线程自己去修改该数据,数据所在线程完成修改之后可与其他线程共享修改后的数据,基于此,也就实现了不同线程间的数据同步,该实现方式能够避免由于不同线程修改共享数据而影响共享数据的安全性。例如,线程池包括线程T1和线程T2,线程T2不能直接改T1线程的数据,若线程T2需要修改T1中的数据,即需要数据同步,线程T2必须通过将数据修改需求放入线程T1对应的无锁队列中,以使线程T1自己去修改该数据,线程T1修改该数据之后,可与线程T2共享修改后的数据,由此也即实现了线程T1和线程T2之间的数据同步。
在一些实施例中,所述每个线程执行当前阶段对应的逻辑类别中的计算逻辑,包括:对于角色逻辑类别中的每个计算逻辑,执行该计算逻辑中的接口函数,以访问该计算逻辑中的数据。在一些实施例中,角色数据逻辑的方法按照方法前缀,分为私有方法和公共方法;私有方法仅在角色所绑定的线程中调用,只有公共方法才会在不同线程间调用,从而产生多线程之间的数据交互。
在一些实施例中,所述对于角色逻辑类别中的每个计算逻辑,执行该计算逻辑中的接口函数,以访问该计算逻辑中的数据,包括:对于角色逻辑类别中的每个计算逻辑,在执行该计算逻辑中的公共接口函数时,检测当前执行的线程是否为角色所绑定的线程;若是,继续执行该公共接口函数,以访问该计算逻辑中的数据;若否,将异步逻辑数据发送到角色所绑定的线程的无锁队列中以等待异步执行,其中,所述异步逻辑数据包括该公共接口函数及该公共接口函数对应的传入参数。所述公共接口函数也即相当于公共方法。在一些实施例中,检测当前执行的线程是否为角色所绑定的线程,也即对接口函数进行线程安全检查,作为一种具体实现方式,在每个阶段中,接口函数在开始执行时,需判断当前的函数调用线程是否为在函数持有者所在线程,从而确定当前阶段的执行是否线程安全;如安全,继续执行;如不安全,要实现将接口函数真正逻辑和参数打包到函数持有者所在线程的无锁队列中,等待异步执行。作为一个示例,一个公共接口函数的函数持有者为角色A,线程T1调用该公共接口函数时,先判断线程T1是否为该公共接口函数的角色A所绑定的线程,若是,线程T1继续执行该公共接口函数,若否,将该公共接口函数以及其传入参数打包到角色A所绑定的线程的无锁队列中,等待异步执行。通过在检测到当前执行的线程并非角色所绑定的线程时转为异步执行,能够在不采用锁的情况下保证数据安全。
需要说明的是,场景的数据同样是私有的,但不同场景之间并不会发生交互;由于一个场景在其生命周期内被唯一绑定至一个线程,因此,并不会存在场景数据的跨线程调用。
本申请还提供了一种用于实现不分线无缝游戏世界的服务器,其中,所述服务器包括本申请所述的不分线装置。
本申请还提供了一种用于实现不分线无缝游戏世界的系统,该系统包括本申请所述的用于实现不分线无缝游戏世界的服务器,以及客户端。在一些实施例中,客户端通常用于把大世界地图切割成无数的小地图,根据玩家所在的位置动态加载和释放各个小地图,而基于本申请的系统,由于能够达到不分线来实现多人在线游戏无缝世界的目的,从而提高玩家在游戏中的真实体验。
本申请还提供了一种设备,其中,所述设备包括:存储器,用于存储一个或多个程序;一个或多个处理器,与所述存储器相连,当所述一个或多个程序被所述一个或者多个处理器执行时,使得所述一个或多个处理器执行本申请所述的用于实现不分线无缝游戏世界的方法。
本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序可被处理器执行本申请所述的用于实现不分线无缝游戏世界的方法。
本申请还提供了一种计算机程序产品,当所述计算机程序产品被设备执行时,使得所述设备执行本申请所述的用于实现不分线无缝游戏世界的方法。
图3示出了可被用于实施本申请中所述的各个实施例的示例性系统。
在一些实施例中,系统1000能够作为本申请实施例中的任意一个处理设备。在一些实施例中,系统1000可包括具有指令的一个或多个计算机可读介质(例如,系统存储器或NVM/存储设备1020)以及与该一个或多个计算机可读介质耦合并被配置为执行指令以实现模块从而执行本申请中所述的动作的一个或多个处理器(例如,(一个或多个)处理器1005)。
对于一个实施例,系统控制模块1010可包括任意适当的接口控制器,以向(一个或多个)处理器1005中的至少一个和/或与系统控制模块1010通信的任意适当的设备或组件提供任意适当的接口。
系统控制模块1010可包括存储器控制器模块1030,以向系统存储器1015提供接口。存储器控制器模块1030可以是硬件模块、软件模块和/或固件模块。
系统存储器1015可被用于例如为系统1000加载和存储数据和/或指令。对于一个实施例,系统存储器1015可包括任意适当的易失性存储器,例如,适当的DRAM。在一些实施例中,系统存储器1015可包括双倍数据速率类型四同步动态随机存取存储器(DDR4SDRAM)。
对于一个实施例,系统控制模块1010可包括一个或多个输入/输出(I/O)控制器,以向NVM/存储设备1020及(一个或多个)通信接口1025提供接口。
例如,NVM/存储设备1020可被用于存储数据和/或指令。NVM/存储设备1020可包括任意适当的非易失性存储器(例如,闪存)和/或可包括任意适当的(一个或多个)非易失性存储设备(例如,一个或多个硬盘驱动器(HDD)、一个或多个光盘(CD)驱动器和/或一个或多个数字通用光盘(DVD)驱动器)。
NVM/存储设备1020可包括在物理上作为系统1000被安装在其上的设备的一部分的存储资源,或者其可被该设备访问而不必作为该设备的一部分。例如,NVM/存储设备1020可通过网络经由(一个或多个)通信接口1025进行访问。
(一个或多个)通信接口1025可为系统1000提供接口以通过一个或多个网络和/或与任意其他适当的设备通信。系统1000可根据一个或多个无线网络标准和/或协议中的任意标准和/或协议来与无线网络的一个或多个组件进行无线通信。
对于一个实施例,(一个或多个)处理器1005中的至少一个可与系统控制模块1010的一个或多个控制器(例如,存储器控制器模块1030)的逻辑封装在一起。对于一个实施例,(一个或多个)处理器1005中的至少一个可与系统控制模块1010的一个或多个控制器的逻辑封装在一起以形成系统级封装(SiP)。对于一个实施例,(一个或多个)处理器1005中的至少一个可与系统控制模块1010的一个或多个控制器的逻辑集成在同一模具上。对于一个实施例,(一个或多个)处理器1005中的至少一个可与系统控制模块1010的一个或多个控制器的逻辑集成在同一模具上以形成片上系统(SoC)。
在各个实施例中,系统1000可以但不限于是:服务器、工作站、台式计算设备或移动计算设备(例如,膝上型计算设备、手持计算设备、平板电脑、上网本等)。在各个实施例中,系统1000可具有更多或更少的组件和/或不同的架构。例如,在一些实施例中,系统1000包括一个或多个摄像机、键盘、液晶显示器(LCD)屏幕(包括触屏显示器)、非易失性存储器端口、多个天线、图形芯片、专用集成电路(ASIC)和扬声器。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
虽然前面特别示出并且描述了示例性实施例,但是本领域技术人员将会理解的是,在不背离权利要求书的精神和范围的情况下,在其形式和细节方面可以有所变化。这里所寻求的保护在所附权利要求书中做了阐述。在下列编号条款中规定了各个实施例的这些和其他方面:
1.一种用于实现不分线无缝游戏世界的方法,其中,所述方法包括:
将多人在线游戏的服务器中每帧都需执行的计算逻辑归纳为多个逻辑类别,并根据所述多个逻辑类别,确定线程池对应的多个阶段;
线程池在每帧中根据所述多个阶段来按阶段执行,其中,当一个阶段开始,线程池激活所有线程,每个线程执行当前阶段对应的逻辑类别中的计算逻辑,且当执行完当前阶段对应的计算逻辑后,检测本线程的无锁队列中是否有等待异步执行的异步逻辑数据,若有则执行所述异步逻辑数据以进行数据同步,当每个线程均执行完当前阶段对应的计算逻辑并且每个线程都不存在等待异步执行的异步逻辑时,开始下一个阶段,直至所述多个阶段执行完毕。
2.根据条款1所述的方法,其中,所述方法还包括:
创建所述线程池,其中,所述线程池中的线程数是根据CPU核心数确定的。
3.根据条款1所述的方法,其中,所述将多人在线游戏的服务器中每帧都需执行的计算逻辑归纳为多个逻辑类别,并根据所述多个逻辑类别,确定线程池对应的多个阶段,包括:
将多人在线游戏的服务器中每帧都需执行的计算逻辑划分为管理数据逻辑和角色数据逻辑;
将管理数据逻辑归纳为多个管理逻辑类别,将角色数据逻辑归纳为多个角色逻辑类别;
根据所述多个管理逻辑类别和所述多个角色逻辑类别,确定线程池对应的多个阶段,其中,一个阶段对应一个管理逻辑类别和/或一个角色逻辑类别。
4.根据条款3所述的方法,其中,所述将多人在线游戏的服务器中每帧都需执行的计算逻辑归纳为多个逻辑类别,并根据所述多个逻辑类别,确定线程池对应的多个阶段,还包括:
将角色数据逻辑按照角色数量平分到线程池的各个线程中,其中,每个角色在生命周期内唯一绑定至一个线程;
将管理数据逻辑按照场景数量平分到线程池的各个线程中,其中,每个场景在生命周期内唯一绑定至一个线程。
5.根据条款3所述的方法,其中,所述角色逻辑类别至少包括以下任一项:
属性计算逻辑;
视野同步逻辑;
网络协议处理逻辑;
战斗交互逻辑。
6.根据条款3所述的方法,其中,每个计算逻辑中的数据均为私有。
7.根据条款6所述的方法,其中,所述每个线程执行当前阶段对应的逻辑类别中的计算逻辑,包括:
对于角色逻辑类别中的每个计算逻辑,执行该计算逻辑中的接口函数,以访问该计算逻辑中的数据。
8.根据条款7所述的方法,其中,所述对于角色逻辑类别中的每个计算逻辑,执行该计算逻辑中的接口函数,以访问该计算逻辑中的数据,包括:
对于角色逻辑类别中的每个计算逻辑,在执行该计算逻辑中的公共接口函数时,检测当前执行的线程是否为角色所绑定的线程;若是,继续执行该公共接口函数,以访问该计算逻辑中的数据;若否,将异步逻辑数据发送到角色所绑定的线程的无锁队列中以等待异步执行,其中,所述异步逻辑数据包括该公共接口函数及该公共接口函数对应的传入参数。
9.一种用于实现不分线无缝游戏世界的装置,其中,所述装置包括:
用于将多人在线游戏的服务器中每帧都需执行的计算逻辑归纳为多个逻辑类别,并根据所述多个逻辑类别,确定线程池对应的多个阶段的装置;
用于线程池在每帧中根据所述多个阶段来按阶段执行的装置,其中,当一个阶段开始,线程池激活所有线程,每个线程执行当前阶段对应的逻辑类别中的计算逻辑,且当执行完当前阶段对应的计算逻辑后,检测本线程的无锁队列中是否有等待异步执行的异步逻辑数据,若有则执行所述异步逻辑数据以进行数据同步,当每个线程均执行完当前阶段对应的计算逻辑并且每个线程都不存在等待异步执行的异步逻辑时,开始下一个阶段,直至所述多个阶段执行完毕。
10.根据条款9所述的装置,其中,所述装置还包括:
用于创建所述线程池的装置,其中,所述线程池中的线程数是根据CPU核心数确定的。
11.根据条款9所述的装置,其中,所述用于将多人在线游戏的服务器中每帧都需执行的计算逻辑归纳为多个逻辑类别,并根据所述多个逻辑类别,确定线程池对应的多个阶段的装置,用于:
将多人在线游戏的服务器中每帧都需执行的计算逻辑划分为管理数据逻辑和角色数据逻辑;
将管理数据逻辑归纳为多个管理逻辑类别,将角色数据逻辑归纳为多个角色逻辑类别;
根据所述多个管理逻辑类别和所述多个角色逻辑类别,确定线程池对应的多个阶段,其中,一个阶段对应一个管理逻辑类别和/或一个角色逻辑类别。
12.根据条款11所述的装置,其中,所述用于将多人在线游戏的服务器中每帧都需执行的计算逻辑归纳为多个逻辑类别,并根据所述多个逻辑类别,确定线程池对应的多个阶段的装置,还用于:
将角色数据逻辑按照角色数量平分到线程池的各个线程中,其中,每个角色在生命周期内唯一绑定至一个线程;
将管理数据逻辑按照场景数量平分到线程池的各个线程中,其中,每个场景在生命周期内唯一绑定至一个线程。
13.根据条款11所述的装置,其中,所述角色逻辑类别至少包括以下任一项:
属性计算逻辑;
视野同步逻辑;
网络协议处理逻辑;
战斗交互逻辑。
14.根据条款11所述的装置,其中,每个计算逻辑中的数据均为私有。
15.根据条款14所述的装置,其中,所述每个线程执行当前阶段对应的逻辑类别中的计算逻辑,包括:
对于角色逻辑类别中的每个计算逻辑,执行该计算逻辑中的接口函数,以访问该计算逻辑中的数据。
16.根据条款15所述的装置,其中,所述对于角色逻辑类别中的每个计算逻辑,执行该计算逻辑中的接口函数,以访问该计算逻辑中的数据,包括:
对于角色逻辑类别中的每个计算逻辑,在执行该计算逻辑中的公共接口函数时,检测当前执行的线程是否为角色所绑定的线程;若是,继续执行该公共接口函数,以访问该计算逻辑中的数据;若否,将异步逻辑数据发送到角色所绑定的线程的无锁队列中以等待异步执行,其中,所述异步逻辑数据包括该公共接口函数及该公共接口函数对应的传入参数。
17.一种用于实现不分线无缝游戏世界的服务器,其中,所述服务器包括如条款9至16中任一项所述的用于实现不分线无缝游戏世界的装置。
18.一种用于实现不分线无缝游戏世界的系统,包括如条款17所述的服务器,以及客户端。
19.一种设备,其中,所述设备包括:
存储器,用于存储一个或多个程序;
一个或多个处理器,与所述存储器相连,
当所述一个或多个程序被所述一个或者多个处理器执行时,使得所述一个或多个处理器执行如条款1至8中任一项所述的方法。
20.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序可被处理器执行如条款1至8中任一项所述的方法。
21.一种计算机程序产品,当所述计算机程序产品被设备执行时,使得所述设备执行如条款1至8中任一项所述的方法。
Claims (20)
1.一种用于实现不分线无缝游戏世界的方法,其中,所述方法包括:
将多人在线游戏的服务器中每帧都需执行的计算逻辑归纳为多个逻辑类别,并根据所述多个逻辑类别,确定线程池对应的多个阶段;
线程池在每帧中根据所述多个阶段来按阶段执行,其中,当一个阶段开始,线程池激活所有线程,每个线程执行当前阶段对应的逻辑类别中的计算逻辑,且当执行完当前阶段对应的计算逻辑后,检测本线程的无锁队列中是否有等待异步执行的异步逻辑数据,若有则执行所述异步逻辑数据以进行数据同步,当每个线程均执行完当前阶段对应的计算逻辑并且每个线程都不存在等待异步执行的异步逻辑时,开始下一个阶段,直至所述多个阶段执行完毕。
2.根据权利要求1所述的方法,其中,所述方法还包括:
创建所述线程池,其中,所述线程池中的线程数是根据CPU核心数确定的。
3.根据权利要求1所述的方法,其中,所述将多人在线游戏的服务器中每帧都需执行的计算逻辑归纳为多个逻辑类别,并根据所述多个逻辑类别,确定线程池对应的多个阶段,包括:
将多人在线游戏的服务器中每帧都需执行的计算逻辑划分为管理数据逻辑和角色数据逻辑;
将管理数据逻辑归纳为多个管理逻辑类别,将角色数据逻辑归纳为多个角色逻辑类别;
根据所述多个管理逻辑类别和所述多个角色逻辑类别,确定线程池对应的多个阶段,其中,一个阶段对应一个管理逻辑类别和/或一个角色逻辑类别。
4.根据权利要求3所述的方法,其中,所述将多人在线游戏的服务器中每帧都需执行的计算逻辑归纳为多个逻辑类别,并根据所述多个逻辑类别,确定线程池对应的多个阶段,还包括:
将角色数据逻辑按照角色数量平分到线程池的各个线程中,其中,每个角色在生命周期内唯一绑定至一个线程;
将管理数据逻辑按照场景数量平分到线程池的各个线程中,其中,每个场景在生命周期内唯一绑定至一个线程。
5.根据权利要求3所述的方法,其中,所述角色逻辑类别至少包括以下任一项:
属性计算逻辑;
视野同步逻辑;
网络协议处理逻辑;
战斗交互逻辑。
6.根据权利要求3所述的方法,其中,每个计算逻辑中的数据均为私有。
7.根据权利要求6所述的方法,其中,所述每个线程执行当前阶段对应的逻辑类别中的计算逻辑,包括:
对于角色逻辑类别中的每个计算逻辑,执行该计算逻辑中的接口函数,以访问该计算逻辑中的数据。
8.根据权利要求7所述的方法,其中,所述对于角色逻辑类别中的每个计算逻辑,执行该计算逻辑中的接口函数,以访问该计算逻辑中的数据,包括:
对于角色逻辑类别中的每个计算逻辑,在执行该计算逻辑中的公共接口函数时,检测当前执行的线程是否为角色所绑定的线程;若是,继续执行该公共接口函数,以访问该计算逻辑中的数据;若否,将异步逻辑数据发送到角色所绑定的线程的无锁队列中以等待异步执行,其中,所述异步逻辑数据包括该公共接口函数及该公共接口函数对应的传入参数。
9.一种用于实现不分线无缝游戏世界的装置,其中,所述装置包括:
用于将多人在线游戏的服务器中每帧都需执行的计算逻辑归纳为多个逻辑类别,并根据所述多个逻辑类别,确定线程池对应的多个阶段的装置;
用于线程池在每帧中根据所述多个阶段来按阶段执行的装置,其中,当一个阶段开始,线程池激活所有线程,每个线程执行当前阶段对应的逻辑类别中的计算逻辑,且当执行完当前阶段对应的计算逻辑后,检测本线程的无锁队列中是否有等待异步执行的异步逻辑数据,若有则执行所述异步逻辑数据以进行数据同步,当每个线程均执行完当前阶段对应的计算逻辑并且每个线程都不存在等待异步执行的异步逻辑时,开始下一个阶段,直至所述多个阶段执行完毕。
10.根据权利要求9所述的装置,其中,所述装置还包括:
用于创建所述线程池的装置,其中,所述线程池中的线程数是根据CPU核心数确定的。
11.根据权利要求9所述的装置,其中,所述用于将多人在线游戏的服务器中每帧都需执行的计算逻辑归纳为多个逻辑类别,并根据所述多个逻辑类别,确定线程池对应的多个阶段的装置,用于:
将多人在线游戏的服务器中每帧都需执行的计算逻辑划分为管理数据逻辑和角色数据逻辑;
将管理数据逻辑归纳为多个管理逻辑类别,将角色数据逻辑归纳为多个角色逻辑类别;
根据所述多个管理逻辑类别和所述多个角色逻辑类别,确定线程池对应的多个阶段,其中,一个阶段对应一个管理逻辑类别和/或一个角色逻辑类别。
12.根据权利要求11所述的装置,其中,所述用于将多人在线游戏的服务器中每帧都需执行的计算逻辑归纳为多个逻辑类别,并根据所述多个逻辑类别,确定线程池对应的多个阶段的装置,还用于:
将角色数据逻辑按照角色数量平分到线程池的各个线程中,其中,每个角色在生命周期内唯一绑定至一个线程;
将管理数据逻辑按照场景数量平分到线程池的各个线程中,其中,每个场景在生命周期内唯一绑定至一个线程。
13.根据权利要求11所述的装置,其中,所述角色逻辑类别至少包括以下任一项:
属性计算逻辑;
视野同步逻辑;
网络协议处理逻辑;
战斗交互逻辑。
14.根据权利要求11所述的装置,其中,每个计算逻辑中的数据均为私有。
15.根据权利要求14所述的装置,其中,所述每个线程执行当前阶段对应的逻辑类别中的计算逻辑,包括:
对于角色逻辑类别中的每个计算逻辑,执行该计算逻辑中的接口函数,以访问该计算逻辑中的数据。
16.根据权利要求15所述的装置,其中,所述对于角色逻辑类别中的每个计算逻辑,执行该计算逻辑中的接口函数,以访问该计算逻辑中的数据,包括:
对于角色逻辑类别中的每个计算逻辑,在执行该计算逻辑中的公共接口函数时,检测当前执行的线程是否为角色所绑定的线程;若是,继续执行该公共接口函数,以访问该计算逻辑中的数据;若否,将异步逻辑数据发送到角色所绑定的线程的无锁队列中以等待异步执行,其中,所述异步逻辑数据包括该公共接口函数及该公共接口函数对应的传入参数。
17.一种用于实现不分线无缝游戏世界的服务器,其中,所述服务器包括如权利要求9至16中任一项所述的用于实现不分线无缝游戏世界的装置。
18.一种用于实现不分线无缝游戏世界的系统,包括如权利要求17所述的服务器,以及客户端。
19.一种设备,其中,所述设备包括:
存储器,用于存储一个或多个程序;
一个或多个处理器,与所述存储器相连,
当所述一个或多个程序被所述一个或者多个处理器执行时,使得所述一个或多个处理器执行如权利要求1至8中任一项所述的方法。
20.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序可被处理器执行如权利要求1至8中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010165979.3A CN111459626B (zh) | 2020-03-11 | 2020-03-11 | 一种用于实现不分线无缝游戏世界的方法和装置 |
PCT/CN2020/112686 WO2021179551A1 (zh) | 2020-03-11 | 2020-08-31 | 一种用于实现不分线无缝游戏世界的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010165979.3A CN111459626B (zh) | 2020-03-11 | 2020-03-11 | 一种用于实现不分线无缝游戏世界的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111459626A CN111459626A (zh) | 2020-07-28 |
CN111459626B true CN111459626B (zh) | 2021-06-01 |
Family
ID=71682829
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010165979.3A Active CN111459626B (zh) | 2020-03-11 | 2020-03-11 | 一种用于实现不分线无缝游戏世界的方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111459626B (zh) |
WO (1) | WO2021179551A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111459626B (zh) * | 2020-03-11 | 2021-06-01 | 完美世界(北京)软件科技发展有限公司 | 一种用于实现不分线无缝游戏世界的方法和装置 |
CN112379981A (zh) * | 2020-11-12 | 2021-02-19 | 中国人民解放军海军工程大学 | 面向分布式实时仿真任务的无锁同步方法 |
CN112657180A (zh) * | 2020-12-21 | 2021-04-16 | 北京像素软件科技股份有限公司 | 游戏运行方法和装置、电子设备及存储介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1848124A (zh) * | 2005-04-12 | 2006-10-18 | 国际商业机器公司 | 基于服务器/客户机的无缝游戏世界系统及其方法 |
CN101795275A (zh) * | 2010-02-03 | 2010-08-04 | 北京航空航天大学 | 一种多人在线网络游戏服务器的并行优化技术 |
CN102254335A (zh) * | 2011-07-01 | 2011-11-23 | 厦门吉比特网络技术股份有限公司 | 游戏人物编辑系统和方法 |
CN104102488A (zh) * | 2014-07-18 | 2014-10-15 | 无锡梵天信息技术股份有限公司 | 一种基于多线程并行化的3d引擎系统 |
CN106385408A (zh) * | 2016-09-01 | 2017-02-08 | 网易(杭州)网络有限公司 | 运动状态变化的指示、处理方法及装置 |
CN106991713A (zh) * | 2017-04-13 | 2017-07-28 | 网易(杭州)网络有限公司 | 更新游戏中的场景的方法和装置、介质、处理器以及终端 |
CN107096221A (zh) * | 2015-09-30 | 2017-08-29 | 索尼互动娱乐美国有限责任公司 | 用于提供时移智能同步游戏视频的系统和方法 |
CN109381858A (zh) * | 2018-10-22 | 2019-02-26 | 竞技世界(北京)网络技术有限公司 | 一种网络游戏中位置同步方法 |
CN109550249A (zh) * | 2018-11-28 | 2019-04-02 | 腾讯科技(深圳)有限公司 | 一种目标对象的控制方法以及相关装置 |
CN110347486A (zh) * | 2019-07-02 | 2019-10-18 | Oppo广东移动通信有限公司 | 应用程序的线程分配方法、装置、设备及可读存储介质 |
CN110704191A (zh) * | 2019-09-29 | 2020-01-17 | Oppo广东移动通信有限公司 | 一种游戏优化方法、游戏优化装置及移动终端 |
CN110860086A (zh) * | 2019-11-08 | 2020-03-06 | 武汉微派网络科技有限公司 | 数据处理方法、可读存储介质和电子设备 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8968087B1 (en) * | 2009-06-01 | 2015-03-03 | Sony Computer Entertainment America Llc | Video game overlay |
US8762994B2 (en) * | 2010-08-26 | 2014-06-24 | Intel Corporation | Power-optimized interrupt delivery |
CN102436368B (zh) * | 2011-12-31 | 2016-06-01 | 北京像素软件科技股份有限公司 | 一种网络游戏中的指令处理方法 |
CN106375314B (zh) * | 2016-08-31 | 2018-10-02 | 腾讯科技(深圳)有限公司 | 一种游戏同步方法、游戏客户端及游戏服务器 |
CN107789836B (zh) * | 2016-09-06 | 2021-03-26 | 盛趣信息技术(上海)有限公司 | 一种在线游戏千人同屏的实现方法以及客户端 |
WO2019177351A1 (ko) * | 2018-03-14 | 2019-09-19 | (주)크래프톤 | 멀티 쓰레드를 구현하는 게임의 처리 속도를 향상시키는 장치 및 그 방법 |
CN110147269B (zh) * | 2019-05-09 | 2023-06-13 | 腾讯科技(上海)有限公司 | 一种事件处理方法、装置、设备及存储介质 |
CN110855708B (zh) * | 2019-11-26 | 2021-06-11 | 上海莉莉丝科技股份有限公司 | 游戏服务器架构 |
CN111459626B (zh) * | 2020-03-11 | 2021-06-01 | 完美世界(北京)软件科技发展有限公司 | 一种用于实现不分线无缝游戏世界的方法和装置 |
-
2020
- 2020-03-11 CN CN202010165979.3A patent/CN111459626B/zh active Active
- 2020-08-31 WO PCT/CN2020/112686 patent/WO2021179551A1/zh active Application Filing
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1848124A (zh) * | 2005-04-12 | 2006-10-18 | 国际商业机器公司 | 基于服务器/客户机的无缝游戏世界系统及其方法 |
CN101795275A (zh) * | 2010-02-03 | 2010-08-04 | 北京航空航天大学 | 一种多人在线网络游戏服务器的并行优化技术 |
CN102254335A (zh) * | 2011-07-01 | 2011-11-23 | 厦门吉比特网络技术股份有限公司 | 游戏人物编辑系统和方法 |
CN104102488A (zh) * | 2014-07-18 | 2014-10-15 | 无锡梵天信息技术股份有限公司 | 一种基于多线程并行化的3d引擎系统 |
CN107096221A (zh) * | 2015-09-30 | 2017-08-29 | 索尼互动娱乐美国有限责任公司 | 用于提供时移智能同步游戏视频的系统和方法 |
CN106385408A (zh) * | 2016-09-01 | 2017-02-08 | 网易(杭州)网络有限公司 | 运动状态变化的指示、处理方法及装置 |
CN106991713A (zh) * | 2017-04-13 | 2017-07-28 | 网易(杭州)网络有限公司 | 更新游戏中的场景的方法和装置、介质、处理器以及终端 |
CN109381858A (zh) * | 2018-10-22 | 2019-02-26 | 竞技世界(北京)网络技术有限公司 | 一种网络游戏中位置同步方法 |
CN109550249A (zh) * | 2018-11-28 | 2019-04-02 | 腾讯科技(深圳)有限公司 | 一种目标对象的控制方法以及相关装置 |
CN110347486A (zh) * | 2019-07-02 | 2019-10-18 | Oppo广东移动通信有限公司 | 应用程序的线程分配方法、装置、设备及可读存储介质 |
CN110704191A (zh) * | 2019-09-29 | 2020-01-17 | Oppo广东移动通信有限公司 | 一种游戏优化方法、游戏优化装置及移动终端 |
CN110860086A (zh) * | 2019-11-08 | 2020-03-06 | 武汉微派网络科技有限公司 | 数据处理方法、可读存储介质和电子设备 |
Non-Patent Citations (3)
Title |
---|
SMOG: A cloud platform for seamless wide area migration of online games;Virajith Jalaparti等;《2012 11th Annual Workshop on Network and Systems Support for Games (NetGames)》;20130111;全文 * |
可扩展的 MMORPG 游戏框架的设计与实现;李建微等;《计算机技术与发展》;20120228;第22卷(第2期);第1-5页 * |
大型多人在线网络游戏中无缝地图的研究与实现;谭哲锋;《《中国优秀硕士学位论文全文数据库信息科技辑》》;20120315;第2012年卷(第3期);I139-508 * |
Also Published As
Publication number | Publication date |
---|---|
CN111459626A (zh) | 2020-07-28 |
WO2021179551A1 (zh) | 2021-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111459626B (zh) | 一种用于实现不分线无缝游戏世界的方法和装置 | |
US20230032554A1 (en) | Data processing method and apparatus, and storage medium | |
US10347013B2 (en) | Session idle optimization for streaming server | |
US9026630B2 (en) | Managing resources in a distributed system using dynamic clusters | |
CN109522087B (zh) | 基于国产申威处理器的虚拟机构建方法和系统 | |
US9158362B2 (en) | System and method for power reduction by sequestering at least one device or partition in a platform from operating system access | |
CN103562868B (zh) | 分布式计算框架 | |
EP1989635B1 (en) | Migrating a virtual machine that owns a resource such as a hardware device | |
US20150143375A1 (en) | Transaction execution in systems without transaction support | |
KR102425168B1 (ko) | 이미지 획득 방법, 기기, 서버 및 저장 매체 | |
CN111708642B (zh) | Vr系统中处理器性能优化方法、装置及vr设备 | |
US11886898B2 (en) | GPU-remoting latency aware virtual machine migration | |
JP2022513869A (ja) | マッシブマルチプレーヤコンピュート | |
CN115686758B (zh) | 一种基于帧统计的VirtIO-GPU性能可控方法 | |
JP2017504986A (ja) | 複数の表示生成のためのデータコレクション | |
US8655971B2 (en) | Breaking locks held by two-phase commit transactions while preserving data consistency | |
CN110377398A (zh) | 一种资源管理方法、装置及主机设备、存储介质 | |
CN111737166B (zh) | 数据对象的处理方法、装置及设备 | |
CN109011568B (zh) | 游戏地图的分配方法及系统 | |
CN111714879B (zh) | 物理状态的更新方法和装置、存储介质、电子装置 | |
US20240069979A1 (en) | Container scheduling | |
US20230334066A1 (en) | Data movement from data storage clusters | |
CN117205543A (zh) | 一种基于分布式架构的游戏处理方法、装置、设备及介质 | |
CN118093083A (zh) | 页面处理方法、装置、计算机设备及计算机可读存储介质 | |
CN105988873A (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 |