CN116159312A - 游戏房间管理方法、装置、设备及存储介质 - Google Patents
游戏房间管理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN116159312A CN116159312A CN202310116898.8A CN202310116898A CN116159312A CN 116159312 A CN116159312 A CN 116159312A CN 202310116898 A CN202310116898 A CN 202310116898A CN 116159312 A CN116159312 A CN 116159312A
- Authority
- CN
- China
- Prior art keywords
- room
- service
- entity
- target
- request
- 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.)
- Pending
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/70—Game security or game management aspects
- A63F13/79—Game security or game management aspects involving player-related data, e.g. identities, accounts, preferences or play histories
- A63F13/795—Game security or game management aspects involving player-related data, e.g. identities, accounts, preferences or play histories for finding other players; for building a team; for providing a buddy list
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/0482—Interaction with lists of selectable items, e.g. menus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0487—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
- G06F3/0488—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
-
- 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/5546—Details of game data or player data management using player registration data, e.g. identification, account, preferences, game history
- A63F2300/5566—Details of game data or player data management using player registration data, e.g. identification, account, preferences, game history by matching opponents or finding partners to build a team, e.g. by skill level, geographical area, background, play style
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- General Business, Economics & Management (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种游戏房间管理方法、装置、设备及存储介质,该方法通过基于至少两个的逻辑承载进程和玩家承载进程的自定义房间系统来控制游戏房间的创建和控制玩家进入房间,其中,每个进程都记录有所有进程的房间信息,由于多个逻辑承载进程分别承载所有房间实体,为了能够使玩家加入全服任意一个房间,需要建立全服所有房间与其所在房间服务的映射关系。解决现有的单个服务器控制游戏房间创建方案扩展性差且容灾能力弱的问题。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种游戏房间管理方法、装置、设备及存储介质。
背景技术
随着游戏技术和相关产业的发展,目前不仅实现了手游和游戏的直播,还实现了通过创建房间的方式来实现直播观看比赛等,尤其是在多人同场竞技的大型网络游戏中,自定义房间系统是一种主要用来承载小型多人比赛以及大规模赛事活动的技术。在自定义房间中,可以限制参与人员,指定比赛模式等,相比于一般的匹配机制,更能满足玩家多样化的竞技需求。
在现有的自定义房间系统中,一般每一场比赛或赛事对应着服务器上的一个自定义房间实体。现有游戏,大多将全部房间实体以列表的形式存储在单个服务器进程中,并且该进程负责所有房间逻辑均是在服务器通过全局房间列表的方式来控制,但是随着线上比赛或赛事的不断增加,承载房间逻辑的服务器进程将逐渐成为性能热点。房间逻辑进程作为一个单点服务,难以水平扩展,一旦该进程崩溃,将导致全服的自定义房间服务不可用,容灾性较差。
发明内容
本发明的主要目的在于解决现有的单个服务器控制游戏房间创建方案扩展性差且容灾能力弱的问题。
本发明第一方面提供了一种游戏房间管理方法,应用于自定义房间系统,所述自定义房间系统包括至少两个房间逻辑承载进程和至少两个玩家承载进程,每个所述房间逻辑承载进程设有一个用于管理自定义房间实体的房间服务,每个所述玩家承载进程设有一个房间服务缓存,所述房间服务缓存中存储含有所有房间逻辑承载进程的自定义房间实体与玩家实体对应关系的房间服务列表,所游戏房间管理方法包括:
接收到客户端发送的房间操作请求,并确定所述房间操作请求的类型;
若所述类型为创建房间请求时,通过所述房间服务缓存从所述房间服务列表随机选择一个可用的房间服务作为目标房间服务,并将所述创建房间请求发送至所述目标房间服务;所述目标房间服务在接收到所述创建房间请求后,创建对应的房间实体,并将创建的结果发送给所述至少两个玩家承载进程;
若所述类型为进入房间请求时,通过所述房间服务缓存从所述房间服务列表中当前使用的房间服务中选择目标房间实体,并向所述当前使用的房间服务请求进入所述目标房间实体;所述目标房间实体在接收到请求后,基于请求在所述目标房间实体中选择匹配的座位,并将所述目标房间实体中座位选择的结果同步给所述目标房间实体中的其他玩家。
本发明第二方面提供了一种游戏房间管理装置,应用于自定义房间系统,所述自定义房间系统包括至少两个房间逻辑承载进程和至少两个玩家承载进程,每个所述房间逻辑承载进程设有一个用于管理自定义房间实体的房间服务,每个所述玩家承载进程设有一个房间服务缓存,所述房间服务缓存中存储含有所有房间逻辑承载进程的自定义房间实体与玩家实体对应关系的房间服务列表,所述游戏房间管理装置包括:
接收模块,用于接收到客户端发送的房间操作请求,并确定所述房间操作请求的类型;
房间创建模块,用于在所述类型为创建房间请求时,通过所述房间服务缓存从所述房间服务列表随机选择一个可用的房间服务作为目标房间服务,并将所述创建房间请求发送至所述目标房间服务;所述目标房间服务在接收到所述创建房间请求后,创建对应的房间实体,并将创建的结果发送给所述至少两个玩家承载进程;
房间进入模块,用于在所述类型为进入房间请求时,通过所述房间服务缓存从所述房间服务列表中当前使用的房间服务中选择目标房间实体,并向所述当前使用的房间服务请求进入所述目标房间实体;所述目标房间实体在接收到请求后,基于请求在所述目标房间实体中选择匹配的座位,并将所述目标房间实体中座位选择的结果同步给所述目标房间实体中的其他玩家。
本发明第三方面提供了一种游戏房间管理装置,包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;所述至少一个处理器调用所述存储器中的所述指令,以使得所述游戏房间管理设备执行上述的游戏房间管理方法的各个步骤。
本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的游戏房间管理方法的各个步骤。
上述游戏房间管理方法、装置、设备及存储介质,通过基于至少两个的逻辑承载进程和玩家承载进程的自定义房间系统来控制游戏房间的创建和控制玩家进入房间,其中,每个进程都记录有所有进程的房间信息,由于多个逻辑承载进程分别承载所有房间实体,为了能够使玩家加入全服任意一个房间,需要建立全服所有房间与其所在房间服务的映射关系。解决现有的单个服务器控制游戏房间创建方案扩展性差且容灾能力弱的问题。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
图1为本发明实施例中游戏房间管理方法的第一个实施例示意图;
图2为本发明实施例中游戏房间管理方法的第二个实施例示意图;
图3为本发明实施例中自定义房间系统的部署流程图框架;
图4为本发明实施例中创建游戏房间的流程示意图;
图5为本发明实施例中进入游戏房间的流程示意图;
图6为本发明实施例中游戏房间管理装置的一个实施例示意图;
图7为本发明实施例中游戏房间管理装置的另一个实施例示意图;
图8为本发明实施例中游戏房间管理设备的一个实施例示意图。
具体实施方式
本发明实施例提供一种游戏房间管理方法、装置、设备及存储介质,该方法是接收到客户端发送的房间操作请求,并确定房间操作请求的类型;若类型为创建房间请求时,通过房间服务缓存从房间服务列表随机选择一个可用的房间服务作为目标房间服务,并将创建房间请求发送至目标房间服务;目标房间服务在接收到创建房间请求后,创建对应的房间实体,并将创建的结果发送给至少两个玩家承载进程;若类型为进入房间请求时,通过房间服务缓存从房间服务列表中当前使用的房间服务中选择目标房间实体,并向当前使用的房间服务请求进入目标房间实体;目标房间实体在接收到请求后,基于请求在目标房间实体中选择匹配的座位,并将目标房间实体中座位选择的结果发送给至少两个玩家承载进程。本方法通过将所有房间均匀分布到多个进程,避免了由单个进程承载全部房间造成的性能瓶颈,每个承载房间逻辑的进程各自独立,单个进程崩溃不影响整个房间系统的功能,容灾性能大大提升,同时通过增加房间逻辑进程数量,即可提升整个系统的承载量,便于横向扩展。此外,通过引入房间服务缓存记录房间列表,可以让玩家访问全服任一房间,同时减少了房间逻辑进程的访问压力。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中游戏房间管理方法的第一个实施例,该方法是分布式的自定义房间系统提出的,如图3所示,该自定义房间系统主要由至少两个房间逻辑承载进程(Match_0,Match_1,...Match_N)、至少两个玩家承载进程(Game_0,Game_1,...Game_N)和房间服务管理器组成,每个所述房间逻辑承载进程设有一个用于管理自定义房间实体的房间服务,每个所述玩家承载进程设有一个房间服务缓存,所述房间服务缓存中存储含有所有房间逻辑承载进程的自定义房间实体与玩家实体对应关系的房间服务列表。
在该系统中,其核心功能不再部署在单个进程,而是分散在多个Match进程,每个Match进程各自独立,互不依赖,均可单独实现自定义房间系统的全部功能。自定义房间实体(Room)分散存储在各个Match进程。实际负责管理Room,处理创建、加入、离开房间等逻辑的实体被称为房间服务。服务器玩家实体(Avatar)分散在各个Game进程,客户端玩家通过Avatar向Match进程请求自定义房间相关服务。Avatar本身并不保存可用的房间服务信息,而是由部署在Game进程的房间服务缓存来保存可用自定义房间服务列表,此外房间服务缓存也具有缓存全服房间列表的作用。整个系统的拓扑结构通过房间服务管理器维护:在系统运行时,房间服务管理器会将当前可用的房间服务列表广播给所有Game进程的房间服务缓存予以保存,并不断更新。基于上述的结果,该游戏房间管理方法包括以下步骤:
101、接收到客户端发送的房间操作请求,并确定房间操作请求的类型;
可理解的是,本实施例主要应用于服务器,该服务器可以是单个物理机,也可以是有多个物理机组成的集群,对于只包含单个物理机的情况,其在物理机上设有多个房间逻辑承载进程和多个玩家承载进程,这时的物理机即是自定义房间系统,每个进程均记录有相同的房间信息,即是每个进程包含全服的房间服务列表;而对于包含多个物理机的情况,其设置的多个房间逻辑承载进程和多个玩家承载进程分布在各个物理机上,所有物理机的进程加起来形成一个完成的自定义房间系统。
本实施例中,客户端在需要访问房间时,客户端通过登录对应的应用程序访问玩家承载进程,即是向玩家承载进程发送房间操作请求,其中玩家承载进程中设有玩家实体Avatar和房间服务缓存,而房间服务缓存中包括房间服务列表,而房间服务列表中包括房间服务和各房间服务下的房间实体,同时存储有房间实体与玩家实体之间的对应关系。
在玩家实体接收到房间操作请求后,会识别该请求的类型,基于不同的类型执行不同的房间操作,该类型包括创建和加入两种。
102、若类型为创建房间请求时,通过房间服务缓存从房间服务列表随机选择一个可用的房间服务作为目标房间服务,并将创建房间请求发送至目标房间服务;
本实施例中,在确定房间操作请求为创建房间请求时,客户端通过玩家实体从房间服务缓存中查询可用的房间服务,即是查询可用的房间逻辑承载进程,然后将创建房间请求发送给对应的房间逻辑承载进程。
在实际应用中,对于查询可用的房间逻辑承载进程时,具体是通过识别房间服务缓存中的房间服务列表中的各房间逻辑承载进程对应的房间服务的运行状态,基于运行状态确定房间服务是否可用,具体的,可以基于运行状态确定房间资源是否存在冗余,这里的冗余是以玩家账号占用基本资源为单位计算,若存在冗余,则确定所述房间服务为可用,直到遍历所述房间服务列表中的所有房间服务后,生成可用房间服务列表。
进一步的,利用随机算法的方式将当前创建房间请求分配给其中的房间服务,并将创建房间请求发送给选定的房间服务。
本实施例中,在利用随机算法分配房间的同时,还包括结合房间服务的实际可用资源来分配,具体可以按照可用资源的优先级顺序,随机从优先级较高的部分房间服务中选择一个,并将已选择的房间服务的优先级调整至最低,下一个请求到来时,从优先级较高的剩余部分房间服务中选择,直到该可用房间服务列表中的房间服务均分配一次后,重新赋予优先级,等待下一次创建房间请求的分配。
103、目标房间服务在接收到创建房间请求后,创建对应的房间实体,并将创建的结果发送给至少两个玩家承载进程;
本实施例中,目标房间服务在接收到创建房间请求后,房间逻辑承载进程启动房间创建流程/房间创建程序,基于创建房间请求创建对应的房间实体。
具体的,提取所述创建房间请求中的房间信息和游戏相关数据,例如房间类型、参与游戏的人数、游戏类型和房间权限等等,基于这些信息启动房间创建逻辑,选择与房间类型对应的房间,并调整人数、权限等,最后加载与游戏类型对应的程序界面,然后输出房间实体。
进一步的,在创建完符合创建房间请求的房间实体后,记录房间实体对应的简要信息,如房间唯一标识、房间所在的服务地址等等,该房间所在的服务地址包括房间逻辑承载进程的地址和房间地址,最后将这些简要信息同步给所有的玩家承载进程。
104、若类型为进入房间请求时,通过房间服务缓存从房间服务列表中当前使用的房间服务中选择目标房间实体,并向当前使用的房间服务请求进入目标房间实体;
本实施例中,在确定房间操作请求为进入房间请求时,客户端通过玩家实体从房间服务缓存中查询正在被客户端调用的房间服务,当然可以是可用的房间服务。具体的,基于进入房间请求从所述房间服务缓存中的房间服务列表内选择对应的房间服务,然后继续从选择的房间服务中选定目标房间实体ROOM。
在实际应用中,玩家承载进程中的玩家实体在接收到进入房间请求后,基于进入房间请求调取房间服务列表中的房间服务依次发送给客户端显示,玩家在客户端上显示的房间服务列表中选择一个房间服务,玩家承载进程基于选择的房间服务从调取对应的房间列表显示于客户端,以供玩家选择,基于玩家选择返回的响应消息,提取房间的摘要信息发送给房间逻辑承载进程,并锁定对应的目标房间实体。
105、目标房间实体在接收到请求后,基于请求在目标房间实体中选择匹配的座位,并将目标房间实体中座位选择的结果同步给目标房间实体中的其他玩家。
本实施例中,目标房间实体在接收到请求后,通过解析该请求中携带的目标房间实体的房间唯一标识,基于房间唯一标识从房间服务中选择对应的房间进入,并分配对应的座位。
在分配完成座位后,将分配的结果返回给玩家实体,从而返回给客户端,同时还将分配的结果同步给所有的玩家承载进程中的房间服务缓存,并更新至房间服务缓存中的房间服务列表中。
综上,接收到客户端发送的房间操作请求,并确定房间操作请求的类型;若类型为创建房间请求时,通过房间服务缓存从房间服务列表随机选择一个可用的房间服务作为目标房间服务,并将创建房间请求发送至目标房间服务;目标房间服务在接收到创建房间请求后,创建对应的房间实体,并将创建的结果发送给至少两个玩家承载进程;若类型为进入房间请求时,通过房间服务缓存从房间服务列表中当前使用的房间服务中选择目标房间实体,并向当前使用的房间服务请求进入目标房间实体;目标房间实体在接收到请求后,基于请求在目标房间实体中选择匹配的座位,并将目标房间实体中座位选择的结果同步给目标房间实体中的其他玩家,通过多进程的同步各房间服务,以解决现有的单个服务器控制游戏房间创建方案扩展性差且容灾能力弱的问题。
参照图2-5,为本发明提供的游戏房间管理方法的第二个实施例,下面以服务器为执行主体对该方法做详细说明,该游戏房间管理方法具体包括以下步骤:
201、接收到客户端发送的房间操作请求,并确定房间操作请求的类型;
该步骤中,若类型为创建房间请求时,客户端的玩家通过远程方法调用向服务端发送房间操作请求,基于该房间操作请求确定对应的类型,或者是若类型为进入房间请求时,客户端的玩家通过远程方法调用请求当前服务器上的房间列表,调取列表具体是先从房间服务缓存中调取房间服务列表,然后基于房间服务列表从服务器中调取对应的房间列表。
进一步的,在该步骤之前,还包括部署运行该游戏房间管理方法的系统框架,如图3所示,该系统框架包括至少两个房间逻辑承载进程(Match进程)和至少两个玩家承载进程(Game进程),其中,每个所述玩家承载进程设有一个房间服务缓存,所述房间服务缓存中存储含有所有房间逻辑承载进程的自定义房间实体与玩家实体对应关系的房间服务列表,以及设于房间服务或者房间服务缓存中的房间服务管理器,基于此,其框架部署流程如下:
(1)在启动服务器之初,每个Match进程上的自定义房间服务会将自身注册到房间服务管理器;
(2)房间服务管理器维护了当前所有可用的房间服务,随后启动定时器定期检查更新可用房间服务列表,并将该列表同步给承载玩家的Game进程上的房间服务缓存;
(3)Game进程的玩家实体Avatar在收到客户端发来的请求后,通过随机算法选择本进程房间服务缓存中的某个可用房间服务发起后续房间流程。
在上述架构下,只需要增加Match进程并将服务注册到房间服务管理器即可满足房间数量的不断增长的性能需求。一旦某个Match进程崩溃,根据步骤(2),Game进程可以及时获取最新的房间服务列表,从而向可用房间服务发起请求。另外,房间服务管理器只负责维护刷新可用房间服务,即便宕机也不影响整个自定义房间系统。
202、若类型为创建房间请求时,确定房间服务缓存中所有可用的房间服务;
203、利用随机算法从所有可用的房间服务中随机选择一个作为目标房间服务,并从房间服务列表获取对应的房间服务地址;
204、基于房间服务地址向对应的房间逻辑承载进程上的房间服务发送创建房间请求;
205、目标房间服务在接收到创建房间请求后,创建对应的房间实体,并将创建的结果发送给至少两个玩家承载进程;
本实施例中,所述目标房间服务在接收到所述创建房间请求后,基于所述创建房间请求创建对应的房间实体,并将创建的结果返回至对应的玩家实体;提取创建的房间实体的简要信息,并将所述简要信息通过广播消息发送给所述至少两个玩家承载进程中的房间服务缓存。
进一步的,在所述提取创建的房间实体的简要信息,并将所述简要信息通过广播消息发送给所述至少两个玩家承载进程中的房间服务缓存之后,还包括:
所述至少两个玩家承载进程中的房间服务缓存接收到广播消息后,提取所述广播消息中的房间实体的简要信息,并更新至所述房间服务列表中。
在实际应用中,基于图3提供的自定义房间系统的部署框架,其实现游戏房间的创建具体实现流程如图4所示:
(1)在客户端,玩家通过远程方法调用向服务端发送创建房间请求;
(2)在Game进程,由于房间服务缓存记录了当前可用的房间服务列表,Avatar可以通过房间服务缓存随机获得一个房间服务地址,并通过该地址向Match进程上的房间服务发送创建房间请求;
(3)在Match进程,房间服务收到请求后,首先创建并保存自定义房间实体Room,并将创建结果返回给Game进程的Avatar;
(4)此外房间服务会将Room的简要信息(房间唯一ID,房间所在的服务地址等)通过广播的形式同步给其他Game进程上的房间服务缓存;
(5)在Game进程Avatar收到创建房间结果后更新自身状态,并将创建结果返回给客户端;
(6)房间服务缓存收到新房间创建的广播消息,更新自身存储的房间列表。
在上述流程中,创建房间的请求被房间服务缓存通过随机算法被均匀分布到了多个Match进程处理,使得每个Match进程的负载更为均衡,减少了单个Match进程的存储和访问压力,当某个Match进程崩溃后,房间服务缓存仍然可以随机获取到其他可用的房间服务为玩家提供自定义房间服务,容灾性能大大提升。
206、若所述类型为进入房间请求时,通过房间服务缓存从房间服务列表中当前使用的房间服务中选择目标房间实体,并向当前使用的房间服务请求进入目标房间实体;
该步骤中,通过所述房间服务缓存将所述房间服务列表按照分页的方式依次返回给客户端;接收所述客户端响应针对于所述房间服务列表中当前使用的房间服务的触控操作,并基于所述触控操作确定目标房间实体和当前使用的房间服务的房间服务地址;提取所述目标房间实体的房间唯一标识,并生成进入请求;基于所述房间服务地址将所述进入请求发送给对应的房间逻辑承载进程上的房间服务,并基于所述房间唯一标识进入对应的房间实体。
207、目标房间实体在接收到请求后,基于请求在目标房间实体中选择匹配的座位,并将目标房间实体中座位选择的结果同步给目标房间实体中的其他玩家。
该步骤中,所述目标房间实体在接收到请求后,基于所述客户端对应的玩家信息从所述目标房间实体中匹配对应的座位,并将匹配的结果返回给对应的玩家实体;所述目标房间实体将匹配的结果通过广播信息同步给所述目标房间实体中的其他玩家,进一步的,还可以是发送给所述目标房间实体所在的房间逻辑承载进程中的其他房间实体,以及所有玩家承载进程上的房间服务缓存。
本实施例中,所述自定义房间系统还包括房间服务管理器,所述游戏房间管理方法还包括:
通过启动定时器定期控制所述房间服务管理器检查所述房间服务列表中各房间服务的可用性,并将检查的结果同步给所有玩家承载进程上的房间服务缓存,以及对不可用的房间服务发请调整请求,从可用的房间服务中选择一个承接。
在实际应用中,对于客户端,玩家首先需要获得目标房间的信息(房间唯一ID,房间名称等),才能向服务器发起加入某个房间的请求。对于服务端,Game进程的Avatar需要能够根据房间ID找到其所在的房间服务从而发送后续请求。在使用单点承载所有房间实体的自定义房间系统中,只需要向单点发送后续请求即可。而在本发明中,由于多个Match进程分别承载所有房间实体,为了能够使玩家加入全服任意一个房间,需要建立全服所有房间与其所在房间服务的映射关系。基于图3提供的自定义房间系统的部署框架,其实现进入游戏房间具体实现流程如图5所示:
(1)在客户端,玩家通过远程方法调用请求当前服务器上的房间列表;
(2)在Game进程,房间服务缓存通过分页的方式,将全服房间列表的一部分返回给客户端用以显示,减小数据传输压力;
(3)在客户端,玩家请求加入房间,并将房间唯一ID(room_id)发送给服务端;
(4)在Game进程,Avatar根据room_id向房间服务缓存查询房间所在的房间服务地址,从而继续向Match进程发送加入房间请求;
(5)房间服务保存的房间实体Room处理加入房间请求,将玩家放入合适的座位,返回处理结果;如果加入房间成功,会将新成员信息通过广播的方式同步给房间内的其它成员。
上述流程的关键在于引入房间服务缓存记录全服房间列表信息。房间服务会将新创建的房间广播给所有Game进程上的房间服务缓存,从而起到了数据缓冲的作用。玩家Avatar请求房间列表无需频繁访问房间服务,只需要查询本进程房间服务缓存即可获得房间简要信息,由于房间服务缓存和Avatar在同一进程,大大减少了跨进程通信,提升了服务器效率。
综上,通过将所有房间均匀分布到多个进程,避免了由单个进程承载全部房间造成的性能瓶颈,每个承载房间逻辑的进程各自独立,单个进程崩溃不影响整个房间系统的功能,容灾性能大大提升,同时通过增加房间逻辑进程数量,即可提升整个系统的承载量,便于横向扩展。此外,通过引入房间服务缓存记录房间列表,可以让玩家访问全服任一房间,同时减少了房间逻辑进程的访问压力。
上面对本发明实施例中游戏房间管理方法进行了描述,下面对本发明实施例中游戏房间管理装置进行描述,请参阅图6,本发明实施例中游戏房间管理装置一个实施例,该装置应用于自定义房间系统,所述自定义房间系统包括至少两个房间逻辑承载进程和至少两个玩家承载进程,每个所述房间逻辑承载进程设有一个用于管理自定义房间实体的房间服务,每个所述玩家承载进程设有一个房间服务缓存,所述房间服务缓存中存储含有所有房间逻辑承载进程的自定义房间实体与玩家实体对应关系的房间服务列表,所述游戏房间管理装置包括:
接收模块610,用于接收到客户端发送的房间操作请求,并确定所述房间操作请求的类型;
房间创建模块620,用于在所述类型为创建房间请求时,通过所述房间服务缓存从所述房间服务列表随机选择一个可用的房间服务作为目标房间服务,并将所述创建房间请求发送至所述目标房间服务;所述目标房间服务在接收到所述创建房间请求后,创建对应的房间实体,并将创建的结果发送给所述至少两个玩家承载进程;
房间进入模块630,用于在所述类型为进入房间请求时,通过所述房间服务缓存从所述房间服务列表中当前使用的房间服务中选择目标房间实体,并向所述当前使用的房间服务请求进入所述目标房间实体;所述目标房间实体在接收到请求后,基于请求在所述目标房间实体中选择匹配的座位,并将所述目标房间实体中座位选择的结果同步给所述目标房间实体中的其他玩家。
综上,通过接收到客户端发送的房间操作请求,并确定房间操作请求的类型;若类型为创建房间请求时,通过房间服务缓存从房间服务列表随机选择一个可用的房间服务作为目标房间服务,并将创建房间请求发送至目标房间服务;目标房间服务在接收到创建房间请求后,创建对应的房间实体,并将创建的结果发送给至少两个玩家承载进程;若类型为进入房间请求时,通过房间服务缓存从房间服务列表中当前使用的房间服务中选择目标房间实体,并向当前使用的房间服务请求进入目标房间实体;目标房间实体在接收到请求后,基于请求在目标房间实体中选择匹配的座位,并将目标房间实体中座位选择的结果发送给至少两个玩家承载进程。本方法通过将所有房间均匀分布到多个进程,解决现有的单个服务器控制游戏房间创建方案扩展性差且容灾能力弱的问题。
参见图7,为本申请实施例提供的游戏房间管理装置的第二中实施例,,该装置应用于自定义房间系统,所述自定义房间系统包括至少两个房间逻辑承载进程和至少两个玩家承载进程,每个所述房间逻辑承载进程设有一个用于管理自定义房间实体的房间服务,每个所述玩家承载进程设有一个房间服务缓存,所述房间服务缓存中存储含有所有房间逻辑承载进程的自定义房间实体与玩家实体对应关系的房间服务列表,所述游戏房间管理装置包括:
接收模块610,用于接收到客户端发送的房间操作请求,并确定所述房间操作请求的类型;
房间创建模块620,用于在所述类型为创建房间请求时,通过所述房间服务缓存从所述房间服务列表随机选择一个可用的房间服务作为目标房间服务,并将所述创建房间请求发送至所述目标房间服务;所述目标房间服务在接收到所述创建房间请求后,创建对应的房间实体,并将创建的结果发送给所述至少两个玩家承载进程;
房间进入模块630,用于在所述类型为进入房间请求时,通过所述房间服务缓存从所述房间服务列表中当前使用的房间服务中选择目标房间实体,并向所述当前使用的房间服务请求进入所述目标房间实体;所述目标房间实体在接收到请求后,基于请求在所述目标房间实体中选择匹配的座位,并将所述目标房间实体中座位选择的结果同步给所述目标房间实体中的其他玩家。
在本实施例中,上述房间创建模块620包括:创建请求单元621,其具体用于:
确定所述房间服务缓存中所有可用的房间服务;
利用随机算法从所有可用的房间服务中随机选择一个作为目标房间服务,并从所述房间服务列表获取对应的房间服务地址;
基于所述房间服务地址向对应的房间逻辑承载进程上的房间服务发送所述创建房间请求。
在本实施例中,上述房间创建模块620还包括:创建单元622,其具体用于:
在所述目标房间服务接收到所述创建房间请求后,基于所述创建房间请求创建对应的房间实体,并将创建的结果返回至对应的玩家实体;
提取创建的房间实体的简要信息,并将所述简要信息通过广播消息发送给所述至少两个玩家承载进程中的房间服务缓存。
在本实施例中,上述房间创建模块620还包括:更新单元623,其具体用于:
所述至少两个玩家承载进程中的房间服务缓存接收到广播消息后,提取所述广播消息中的房间实体的简要信息,并更新至所述房间服务列表中。
在本实施例中,上述房间进入模块630包括:进入请求单元631,其具体用于:
通过所述房间服务缓存将所述房间服务列表按照分页的方式依次返回给客户端;
接收所述客户端响应针对于所述房间服务列表中当前使用的房间服务的触控操作,并基于所述触控操作确定目标房间实体和当前使用的房间服务的房间服务地址;
提取所述目标房间实体的房间唯一标识,并生成进入请求;
基于所述房间服务地址将所述进入请求发送给对应的房间逻辑承载进程上的房间服务,并基于所述房间唯一标识进入对应的房间实体。
在本实施例中,上述房间进入模块630包括:进入单元632,其具体用于:
在所述目标房间实体接收到请求后,基于所述客户端对应的玩家信息从所述目标房间实体中匹配对应的座位,并将匹配的结果返回给对应的玩家实体;
所述目标房间实体将匹配的结果通过广播信息发送给所述目标房间实体中的其他玩家。
在本实施例中,所述游戏房间管理装置还包括:调整模块640,其具体用于:
通过启动定时器定期控制房间服务管理器检查所述房间服务列表中各房间服务的可用性,并将检查的结果同步给所有玩家承载进程上的房间服务缓存,以及对不可用的房间服务发请调整请求,从可用的房间服务中选择一个承接。
本发明实施例中,接收到客户端发送的房间操作请求,并确定房间操作请求的类型;若类型为创建房间请求时,通过房间服务缓存从房间服务列表随机选择一个可用的房间服务作为目标房间服务,并将创建房间请求发送至目标房间服务;目标房间服务在接收到创建房间请求后,创建对应的房间实体,并将创建的结果发送给至少两个玩家承载进程;若类型为进入房间请求时,通过房间服务缓存从房间服务列表中当前使用的房间服务中选择目标房间实体,并向当前使用的房间服务请求进入目标房间实体;目标房间实体在接收到请求后,基于请求在目标房间实体中选择匹配的座位,并将目标房间实体中座位选择的结果发送给目标房间实体中的其他玩家,该方法将所有房间均匀分布到多个进程,避免了由单个进程承载全部房间造成的性能瓶颈,每个承载房间逻辑的进程各自独立,单个进程崩溃不影响整个房间系统的功能,容灾性能大大提升,同时通过增加房间逻辑进程数量,即可提升整个系统的承载量,便于横向扩展。此外,通过引入房间服务缓存记录房间列表,可以让玩家访问全服任一房间,同时减少了房间逻辑进程的访问压力。
本实施例还提供一种游戏房间管理设备,包括处理器和存储器,存储器存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现上述游戏房间管理方法。该游戏房间管理设备可以是服务器。
参见图8所示,该游戏房间管理设备包括处理器800和存储器8101,该存储器801存储有能够被处理器800执行的机器可执行指令,该处理器800执行机器可执行指令以实现上述游戏房间管理方法。
进一步地,图8所示的游戏房间管理设备还包括总线802和通信接口803,处理器800、通信接口803和存储器801通过总线802连接。
其中,存储器801可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口803(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线802可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
处理器800可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器800中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器800可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processor,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器801,处理器800读取存储器801中的信息,结合其硬件完成如下步骤:
部署自定义房间系统,其中,所述自定义房间系统包括至少两个房间逻辑承载进程和至少两个玩家承载进程,每个所述房间逻辑承载进程设有一个用于管理自定义房间实体的房间服务,每个所述玩家承载进程设有一个房间服务缓存,所述房间服务缓存中存储含有所有房间逻辑承载进程的自定义房间实体与玩家实体对应关系的房间服务列表;
接收到客户端发送的房间操作请求,并确定所述房间操作请求的类型;
若所述类型为创建房间请求时,通过所述房间服务缓存从所述房间服务列表随机选择一个可用的房间服务作为目标房间服务,并将所述创建房间请求发送至所述目标房间服务;所述目标房间服务在接收到所述创建房间请求后,创建对应的房间实体,并将创建的结果发送给所述至少两个玩家承载进程;
若所述类型为进入房间请求时,通过所述房间服务缓存从所述房间服务列表中当前使用的房间服务中选择目标房间实体,并向所述当前使用的房间服务请求进入所述目标房间实体;所述目标房间实体在接收到请求后,基于请求在所述目标房间实体中选择匹配的座位,并将所述目标房间实体中座位选择的结果同步给所述目标房间实体中的其他玩家。
上述通过所述房间服务缓存从所述房间服务列表随机选择一个可用的房间服务作为目标房间服务,并将所述创建房间请求发送至所述目标房间服务,包括:
确定所述房间服务缓存中所有可用的房间服务;
利用随机算法从所有可用的房间服务中随机选择一个作为目标房间服务,并从所述房间服务列表获取对应的房间服务地址;
基于所述房间服务地址向对应的房间逻辑承载进程上的房间服务发送所述创建房间请求。
上述目标房间服务在接收到所述创建房间请求后,创建对应的房间实体,并将创建的结果发送给所述至少两个玩家承载进程,包括:
所述目标房间服务在接收到所述创建房间请求后,基于所述创建房间请求创建对应的房间实体,并将创建的结果返回至对应的玩家实体;
提取创建的房间实体的简要信息,并将所述简要信息通过广播消息发送给所述至少两个玩家承载进程中的房间服务缓存。
上述在所述提取创建的房间实体的简要信息,并将所述简要信息通过广播消息发送给所述至少两个玩家承载进程中的房间服务缓存之后,还包括:
所述至少两个玩家承载进程中的房间服务缓存接收到广播消息后,提取所述广播消息中的房间实体的简要信息,并更新至所述房间服务列表中。
上述通过所述房间服务缓存从所述房间服务列表中当前使用的房间服务中选择目标房间实体,并向所述当前使用的房间服务请求进入所述目标房间实体,包括:
通过所述房间服务缓存将所述房间服务列表按照分页的方式依次返回给客户端;
接收所述客户端响应针对于所述房间服务列表中当前使用的房间服务的触控操作,并基于所述触控操作确定目标房间实体和当前使用的房间服务的房间服务地址;
提取所述目标房间实体的房间唯一标识,并生成进入请求;
基于所述房间服务地址将所述进入请求发送给对应的房间逻辑承载进程上的房间服务,并基于所述房间唯一标识进入对应的房间实体。
上述目标房间实体在接收到请求后,基于请求在所述目标房间实体中选择匹配的座位,并将所述目标房间实体中座位选择的结果同步给所述目标房间实体中的其他玩家,包括:
所述目标房间实体在接收到请求后,基于所述客户端对应的玩家信息从所述目标房间实体中匹配对应的座位,并将匹配的结果返回给对应的玩家实体;
所述目标房间实体将匹配的结果通过广播信息发送给所述目标房间实体中的其他玩家。
上述自定义房间系统还包括房间服务管理器,所述游戏房间管理方法还包括:
通过启动定时器定期控制所述房间服务管理器检查所述房间服务列表中各房间服务的可用性,并将检查的结果同步给所有玩家承载进程上的房间服务缓存,以及对不可用的房间服务发请调整请求,从可用的房间服务中选择一个承接。
综上,过基于至少两个的逻辑承载进程和玩家承载进程的自定义房间系统来控制游戏房间的创建和控制玩家进入房间,其中,每个进程都记录有所有进程的房间信息,由于多个逻辑承载进程分别承载所有房间实体,为了能够使玩家加入全服任意一个房间,需要建立全服所有房间与其所在房间服务的映射关系。解决现有的单个服务器控制游戏房间创建方案扩展性差且容灾能力弱的问题。
本实施例还提供一种机器可读存储介质,机器可读存储介质存储有机器可执行指令,机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现如下步骤:
部署自定义房间系统,其中,所述自定义房间系统包括至少两个房间逻辑承载进程和至少两个玩家承载进程,每个所述房间逻辑承载进程设有一个用于管理自定义房间实体的房间服务,每个所述玩家承载进程设有一个房间服务缓存,所述房间服务缓存中存储含有所有房间逻辑承载进程的自定义房间实体与玩家实体对应关系的房间服务列表;
接收到客户端发送的房间操作请求,并确定所述房间操作请求的类型;
若所述类型为创建房间请求时,通过所述房间服务缓存从所述房间服务列表随机选择一个可用的房间服务作为目标房间服务,并将所述创建房间请求发送至所述目标房间服务;所述目标房间服务在接收到所述创建房间请求后,创建对应的房间实体,并将创建的结果发送给所述至少两个玩家承载进程;
若所述类型为进入房间请求时,通过所述房间服务缓存从所述房间服务列表中当前使用的房间服务中选择目标房间实体,并向所述当前使用的房间服务请求进入所述目标房间实体;所述目标房间实体在接收到请求后,基于请求在所述目标房间实体中选择匹配的座位,并将所述目标房间实体中座位选择的结果同步给所述目标房间实体中的其他玩家。
上述通过所述房间服务缓存从所述房间服务列表随机选择一个可用的房间服务作为目标房间服务,并将所述创建房间请求发送至所述目标房间服务,包括:
确定所述房间服务缓存中所有可用的房间服务;
利用随机算法从所有可用的房间服务中随机选择一个作为目标房间服务,并从所述房间服务列表获取对应的房间服务地址;
基于所述房间服务地址向对应的房间逻辑承载进程上的房间服务发送所述创建房间请求。
上述目标房间服务在接收到所述创建房间请求后,创建对应的房间实体,并将创建的结果发送给所述至少两个玩家承载进程,包括:
所述目标房间服务在接收到所述创建房间请求后,基于所述创建房间请求创建对应的房间实体,并将创建的结果返回至对应的玩家实体;
提取创建的房间实体的简要信息,并将所述简要信息通过广播消息发送给所述至少两个玩家承载进程中的房间服务缓存。
上述在所述提取创建的房间实体的简要信息,并将所述简要信息通过广播消息发送给所述至少两个玩家承载进程中的房间服务缓存之后,还包括:
所述至少两个玩家承载进程中的房间服务缓存接收到广播消息后,提取所述广播消息中的房间实体的简要信息,并更新至所述房间服务列表中。
上述通过所述房间服务缓存从所述房间服务列表中当前使用的房间服务中选择目标房间实体,并向所述当前使用的房间服务请求进入所述目标房间实体,包括:
通过所述房间服务缓存将所述房间服务列表按照分页的方式依次返回给客户端;
接收所述客户端响应针对于所述房间服务列表中当前使用的房间服务的触控操作,并基于所述触控操作确定目标房间实体和当前使用的房间服务的房间服务地址;
提取所述目标房间实体的房间唯一标识,并生成进入请求;
基于所述房间服务地址将所述进入请求发送给对应的房间逻辑承载进程上的房间服务,并基于所述房间唯一标识进入对应的房间实体。
上述目标房间实体在接收到请求后,基于请求在所述目标房间实体中选择匹配的座位,并将所述目标房间实体中座位选择的结果同步给所述目标房间实体中的其他玩家,包括:
所述目标房间实体在接收到请求后,基于所述客户端对应的玩家信息从所述目标房间实体中匹配对应的座位,并将匹配的结果返回给对应的玩家实体;
所述目标房间实体将匹配的结果通过广播信息发送给所述目标房间实体中的其他玩家。
上述自定义房间系统还包括房间服务管理器,所述游戏房间管理方法还包括:
通过启动定时器定期控制所述房间服务管理器检查所述房间服务列表中各房间服务的可用性,并将检查的结果同步给所有玩家承载进程上的房间服务缓存,以及对不可用的房间服务发请调整请求,从可用的房间服务中选择一个承接。
综上,过基于至少两个的逻辑承载进程和玩家承载进程的自定义房间系统来控制游戏房间的创建和控制玩家进入房间,其中,每个进程都记录有所有进程的房间信息,由于多个逻辑承载进程分别承载所有房间实体,为了能够使玩家加入全服任意一个房间,需要建立全服所有房间与其所在房间服务的映射关系。解决现有的单个服务器控制游戏房间创建方案扩展性差且容灾能力弱的问题。
本发明实施例所提供的游戏房间管理方法及相关设备的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种游戏房间管理方法,应用于自定义房间系统,其特征在于,所述自定义房间系统包括至少两个房间逻辑承载进程和至少两个玩家承载进程,每个所述房间逻辑承载进程设有一个用于管理自定义房间实体的房间服务,每个所述玩家承载进程设有一个房间服务缓存,所述房间服务缓存中存储含有所有房间逻辑承载进程的自定义房间实体与玩家实体对应关系的房间服务列表,所述游戏房间管理方法包括:
接收到客户端发送的房间操作请求,并确定所述房间操作请求的类型;
若所述类型为创建房间请求时,通过所述房间服务缓存从所述房间服务列表随机选择一个可用的房间服务作为目标房间服务,并将所述创建房间请求发送至所述目标房间服务;所述目标房间服务在接收到所述创建房间请求后,创建对应的房间实体,并将创建的结果发送给所述至少两个玩家承载进程;
若所述类型为进入房间请求时,通过所述房间服务缓存从所述房间服务列表中当前使用的房间服务中选择目标房间实体,并向所述当前使用的房间服务请求进入所述目标房间实体;所述目标房间实体在接收到请求后,基于请求在所述目标房间实体中选择匹配的座位,并将所述目标房间实体中座位选择的结果同步给所述目标房间实体中的其他玩家。
2.根据权利要求1所述的游戏房间管理方法,其特征在于,所述通过所述房间服务缓存从所述房间服务列表随机选择一个可用的房间服务作为目标房间服务,并将所述创建房间请求发送至所述目标房间服务,包括:
确定所述房间服务缓存中所有可用的房间服务;
利用随机算法从所有可用的房间服务中随机选择一个作为目标房间服务,并从所述房间服务列表获取对应的房间服务地址;
基于所述房间服务地址向对应的房间逻辑承载进程上的房间服务发送所述创建房间请求。
3.根据权利要求2所述的游戏房间管理方法,其特征在于,所述目标房间服务在接收到所述创建房间请求后,创建对应的房间实体,并将创建的结果发送给所述至少两个玩家承载进程,包括:
所述目标房间服务在接收到所述创建房间请求后,基于所述创建房间请求创建对应的房间实体,并将创建的结果返回至对应的玩家实体;
提取创建的房间实体的简要信息,并将所述简要信息通过广播消息发送给所述至少两个玩家承载进程中的房间服务缓存。
4.根据权利要求3所述的游戏房间管理方法,其特征在于,在所述提取创建的房间实体的简要信息,并将所述简要信息通过广播消息发送给所述至少两个玩家承载进程中的房间服务缓存之后,还包括:
所述至少两个玩家承载进程中的房间服务缓存接收到广播消息后,提取所述广播消息中的房间实体的简要信息,并更新至所述房间服务列表中。
5.根据权利要求1-4中任一项所述的游戏房间管理方法,其特征在于,所述通过所述房间服务缓存从所述房间服务列表中当前使用的房间服务中选择目标房间实体,并向所述当前使用的房间服务请求进入所述目标房间实体,包括:
通过所述房间服务缓存将所述房间服务列表按照分页的方式依次返回给客户端;
接收所述客户端响应针对于所述房间服务列表中当前使用的房间服务的触控操作,并基于所述触控操作确定目标房间实体和当前使用的房间服务的房间服务地址;
提取所述目标房间实体的房间唯一标识,并生成进入请求;
基于所述房间服务地址将所述进入请求发送给对应的房间逻辑承载进程上的房间服务,并基于所述房间唯一标识进入对应的房间实体。
6.根据权利要求5所述的游戏房间管理方法,其特征在于,所述目标房间实体在接收到请求后,基于请求在所述目标房间实体中选择匹配的座位,并将所述目标房间实体中座位选择的结果同步给所述目标房间实体中的其他玩家,包括:
所述目标房间实体在接收到请求后,基于所述客户端对应的玩家信息从所述目标房间实体中匹配对应的座位,并将匹配的结果返回给对应的玩家实体;
所述目标房间实体将匹配的结果通过广播信息发送给所述目标房间实体中的其他玩家。
7.根据权利要求6所述的游戏房间管理方法,其特征在于,所述自定义房间系统还包括房间服务管理器,所述游戏房间管理方法还包括:
通过启动定时器定期控制所述房间服务管理器检查所述房间服务列表中各房间服务的可用性,并将检查的结果同步给所有玩家承载进程上的房间服务缓存,以及对不可用的房间服务发请调整请求,从可用的房间服务中选择一个承接。
8.一种游戏房间管理装置,应用于自定义房间系统,其特征在于,所述自定义房间系统包括至少两个房间逻辑承载进程和至少两个玩家承载进程,每个所述房间逻辑承载进程设有一个用于管理自定义房间实体的房间服务,每个所述玩家承载进程设有一个房间服务缓存,所述房间服务缓存中存储含有所有房间逻辑承载进程的自定义房间实体与玩家实体对应关系的房间服务列表,所述游戏房间管理装置包括:
接收模块,用于接收到客户端发送的房间操作请求,并确定所述房间操作请求的类型;
房间创建模块,用于在所述类型为创建房间请求时,通过所述房间服务缓存从所述房间服务列表随机选择一个可用的房间服务作为目标房间服务,并将所述创建房间请求发送至所述目标房间服务;所述目标房间服务在接收到所述创建房间请求后,创建对应的房间实体,并将创建的结果发送给所述至少两个玩家承载进程;
房间进入模块,用于在所述类型为进入房间请求时,通过所述房间服务缓存从所述房间服务列表中当前使用的房间服务中选择目标房间实体,并向所述当前使用的房间服务请求进入所述目标房间实体;所述目标房间实体在接收到请求后,基于请求在所述目标房间实体中选择匹配的座位,并将所述目标房间实体中座位选择的结果同步给所述目标房间实体中的其他玩家。
9.一种游戏房间管理设备,其特征在于,所述游戏房间管理设备包括:存储器和至少一个处理器,所述存储器中存储有指令;
所述至少一个处理器调用所述存储器中的所述指令,以使得所述游戏房间管理设备执行如权利要求1-7中任一项所述的游戏房间管理步方法的各个步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,其特征在于,所述指令被处理器执行时实现如权利要求1-7中任一项所述的游戏房间管理方法的各个步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310116898.8A CN116159312A (zh) | 2023-02-14 | 2023-02-14 | 游戏房间管理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310116898.8A CN116159312A (zh) | 2023-02-14 | 2023-02-14 | 游戏房间管理方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116159312A true CN116159312A (zh) | 2023-05-26 |
Family
ID=86410981
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310116898.8A Pending CN116159312A (zh) | 2023-02-14 | 2023-02-14 | 游戏房间管理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116159312A (zh) |
-
2023
- 2023-02-14 CN CN202310116898.8A patent/CN116159312A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2648114B1 (en) | Method, system, token conreoller and memory database for implementing distribute-type main memory database system | |
CN111091429A (zh) | 电子票据标识分配方法及装置、电子票据生成系统 | |
CN108881489A (zh) | 一种分布式服务的协调系统及方法 | |
JP2000504863A (ja) | ロードレベルに基づいてクライアントノードをサーバーノードに接続する方法および装置 | |
CN107733957B (zh) | 分布式服务配置系统及版本号分配方法 | |
CN102148850A (zh) | 一种集群系统的业务处理方法及集群系统 | |
CN111538763A (zh) | 一种确定集群中主节点的方法、电子设备和存储介质 | |
CN102340410A (zh) | 集群管理系统及方法 | |
CN113010549A (zh) | 基于异地多活系统的数据处理方法、相关设备及存储介质 | |
CN116107828A (zh) | 主节点选择方法、分布式数据库及存储介质 | |
US20120246311A1 (en) | Session management system, session management device, session management method and session management program | |
CN114157710A (zh) | 通信策略配置方法、装置、存储介质及设备 | |
CN117459444A (zh) | 微服务同城双活同中心优先路由方法、设备及存储介质 | |
CN107025257B (zh) | 一种事务处理方法及装置 | |
CN111274022B (zh) | 服务器资源分配方法和系统 | |
US8266634B2 (en) | Resource assignment system with recovery notification | |
EP2071764B1 (en) | A method, device and communication system thereof of electing local master | |
CN116159312A (zh) | 游戏房间管理方法、装置、设备及存储介质 | |
JPH11249943A (ja) | 分散型データベースの同期管理システムおよび同期管理方法 | |
CN112822528B (zh) | 直播列表服务系统、直播列表管理方法、服务器及介质 | |
CN114489956A (zh) | 一种基于云平台的实例启动方法及装置 | |
CN115437798A (zh) | 共享内存的数据处理方法、装置、设备和介质 | |
CN113268327A (zh) | 事务请求的处理方法、装置和电子设备 | |
CN113760519A (zh) | 分布式事务处理方法、装置、系统和电子设备 | |
KR20100069237A (ko) | 이동 단말 환경에서 가상 머신을 이용한 지속적인 데스크톱제공 시스템 및 방법 |
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 |