基于网络游戏影子角色的操作交互方法及装置与流程

文档序号:17587820发布日期:2019-05-03 21:29阅读:240来源:国知局
基于网络游戏影子角色的操作交互方法及装置与流程

本发明实施例涉及游戏数据处理技术领域,具体而言,涉及一种基于网络游戏影子角色的操作交互方法及装置。



背景技术:

在大型多人在线角色扮演游戏的开发过程中,一般需要创建玩家角色的实体,用以参与游戏内各种逻辑系统的操作和交互,用户与服务器之间、用户与其他用户之间的交互都是基于玩家角色实体进行的。这种角色实体一般伴随着用户的操作在不同的服务器之间进行迁移,但是这样会对服务器造成较大的开销。



技术实现要素:

有鉴于此,本发明提供了一种基于网络游戏影子角色的操作交互方法及装置。

本发明实施例所提供的一种基于网络游戏影子角色的操作交互方法,应用于场景服务器,所述场景服务器与多个逻辑服务器通信连接,各所述逻辑服务器中预存有对应的影子角色数据,所述方法包括:

响应用户输入的操作指令,根据所述操作指令从所述多个逻辑服务器中的每个逻辑服务器中查找出对应的影子角色数据;

对查找出的每个影子角色数据进行异步修改,获取查找出的每个影子角色数据对应的逻辑服务器返回的修改结果,其中,修改结果包括修改成功的第一结果和修改失败的第二结果;

判断获取得到的多个修改结果中是否存在所述第二结果,若存在,控制返回所述第一结果所对应的多个逻辑服务器进行回滚操作。

可选地,根据所述操作指令从所述多个逻辑服务器中的每个逻辑服务器中查找出对应的影子角色数据的步骤,包括:

通过消息队列服务器先后从多个所述逻辑服务器中的每个逻辑服务器中查找出对应的影子角色数据。

可选地,通过消息队列服务器先后从所述多个逻辑服务器中的每个逻辑服务器中查找出对应的影子角色数据的步骤,包括:

针对所述多个逻辑服务器中的一逻辑服务器,通过所述消息队列服务器向该逻辑服务器发送影子角色数据查询请求;

判断是否接收到该逻辑服务器通过所述消息列队服务器返回的影子角色数据;

若接收到该逻辑服务器通过所述消息列队服务器返回的影子角色数据,通过所述消息队列服务器向所述多个逻辑服务器中的另一逻辑服务器发送所述影子角色数据查询请求并进行等待。

可选地,对查找出的每个影子角色数据进行异步修改,获取每个影子角色数据对应的逻辑服务器返回的修改结果的步骤,包括:

针对查找出的一影子角色数据,根据所述操作指令生成该影子角色数据的修改指令,通过所述消息队列服务器将所述修改指令发送至该影子角色数据对应的逻辑服务器以使所述逻辑服务器根据所述修改指令对该影子角色数据进行修改;

判断是否获取到该逻辑服务器返回的修改结果;若获取到该逻辑服务器返回的修改结果,对将所述修改指令发送至查找出的另一影子角色数据对应的逻辑服务器以使另一影子角色数据对应的逻辑服务器根据所述修改指令对另一影子角色数据进行修改。

可选地,控制返回所述第一结果所对应的多个逻辑服务器进行回滚操作的步骤,包括:

针对每个返回了所述第一结果的逻辑服务器,通过消息队列服务器向该逻辑服务器发送回滚请求以使该逻辑服务器根据所述回滚请求将修改成功的影子角色数据进行还原。

本发明实施例还提供了一种基于网络游戏影子角色的操作交互装置,应用于场景服务器,所述场景服务器与多个逻辑服务器通信连接,各所述逻辑服务器中预存有对应的影子角色数据,所述装置包括:

影子角色数据查找模块,用于响应用户输入的操作指令,根据所述操作指令从所述多个逻辑服务器中的每个逻辑服务器中查找出对应的影子角色数据;

影子角色数据修改模块,用于对查找出的每个影子角色数据进行异步修改,获取查找出的每个影子角色数据对应的逻辑服务器返回的修改结果,其中,修改结果包括修改成功的第一结果和修改失败的第二结果;

判断模块,用于判断获取得到的多个修改结果中是否存在所述第二结果,若存在,控制返回所述第一结果所对应的多个逻辑服务器进行回滚操作。

可选地,所述影子角色数据查找模块通过以下方式根据所述操作指令从所述多个逻辑服务器中的每个逻辑服务器中查找出对应的影子角色数据:

通过消息队列服务器先后从多个所述逻辑服务器中的每个逻辑服务器中查找出对应的影子角色数据。

可选地,所述影子角色数据查找模块通过以下方式通过消息队列服务器先后从所述多个逻辑服务器中的每个逻辑服务器中查找出对应的影子角色数据:

针对所述多个逻辑服务器中的一逻辑服务器,通过所述消息队列服务器向该逻辑服务器发送影子角色数据查询请求;

判断是否接收到该逻辑服务器通过所述消息列队服务器返回的影子角色数据;

若接收到该逻辑服务器通过所述消息列队服务器返回的影子角色数据,通过所述消息队列服务器向所述多个逻辑服务器中的另一逻辑服务器发送所述影子角色数据查询请求并进行等待。

可选地,所述影子角色数据修改模块通过以下方式对查找出的每个影子角色数据进行异步修改,获取每个影子角色数据对应的逻辑服务器返回的修改结果:

针对查找出的一影子角色数据,根据所述操作指令生成该影子角色数据的修改指令,通过所述消息队列服务器将所述修改指令发送至该影子角色数据对应的逻辑服务器以使所述逻辑服务器根据所述修改指令对该影子角色数据进行修改;

判断是否获取到该逻辑服务器返回的修改结果;若获取到该逻辑服务器返回的修改结果,对将所述修改指令发送至查找出的另一影子角色数据对应的逻辑服务器以使另一影子角色数据对应的逻辑服务器根据所述修改指令对另一影子角色数据进行修改。

可选地,所述判断模块通过以下方式控制返回所述第一结果所对应的多个逻辑服务器进行回滚操作:

针对每个返回了所述第一结果的逻辑服务器,通过消息队列服务器向该逻辑服务器发送回滚请求以使该逻辑服务器根据所述回滚请求将修改成功的影子角色数据进行还原。

本发明实施例还提供了一种场景服务器,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的基于网络游戏影子角色的操作交互方法。

本发明实施例还提供了一种计算机可读存储介质,所述可读存储介质包括计算机程序,所述计算机程序运行时控制所述可读存储介质所在场景服务器执行上述的基于网络游戏影子角色的操作交互方法。

有益效果

本发明实施例提供的基于网络游戏影子角色的操作交互方法及装置,场景服务器通过将用户输入的操作指令映射到多个逻辑服务器中,以实现对影子角色数据的修改,其中,影子角色数据的修改由逻辑服务器执行,如此,能够有效减少场景服务器在数据转移时的压力。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本发明实施例所提供的一种场景服务器10的方框示意图。

图2为本发明实施例所提供的一种基于网络游戏影子角色的操作交互方法的流程图。

图3为本发明实施例所提供的一种影子角色数据的修改指令流向图。

图4为本发明实施例所提供的一种基于网络游戏影子角色的操作交互装置20的模块框图。

图标:

10-场景服务器;11-存储器;12-处理器;13-网络模块;

20-基于网络游戏影子角色的操作交互装置;21-影子角色数据查找模块;22-影子角色数据修改模块;23-判断模块。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例只是本发明的一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

发明人经调查发现,常见的对角色实体根据用户的操作在不同的服务器之间进行迁移的方法是基于场景创建角色的实例,用户的操作会绑定到当前角色所在的场景的角色实例中,服务端发送给用户的消息也是通过绑定的角色实例进行发送的。但是这种方法无法满足大规模分布式游戏的要求:首先由于大型多人在线角色扮演游戏的角色数据量较大,在进行不同的服务器迁移时,角色数据的迁移会对服务器造成较大的开销,其次单个游戏场景能容纳的角色有限,无法满足大量用户同时涌入单一场景的游戏需求,再次目前这种技术会导致游戏逻辑系统代码在编写时的高耦合度,逻辑系统进行操作、条件判断时依赖其他各种其他游戏系统的条件,无法将操作分布到不同的服务端进程中进行处理意味着无法提高服务器在线角色的容量。

在一些竞技类开房间的游戏中(比较典型的如王者荣耀等),比较常见的方法是在开房间进入游戏场景后将用户的操作与未在房间(未进入游戏场景)的操作分离,玩家操作的角色实体在不同的游戏阶段下不是同一个。但这种方法不适用于大型多人在线角色扮演游戏:在大型多人在线角色扮演游戏中,玩家一旦进入场景后就需要操作所有的相关游戏系统,包括不限于“道具”、“装备”、“好友”等。

以上现有技术中的方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本发明实施例针对上述问题所提出的解决方案,都应该是发明人在本发明过程中对本发明做出的贡献。

基于上述研究,本发明实施例提供了一种基于网络游戏影子角色的操作交互方法及装置,通过将用户输入的操作指令映射到多个逻辑服务器中,以实现对影子角色数据的修改,如此,能够有效减少场景服务器在数据转移时的压力。

图1示出了本发明实施例所提供的一种场景服务器10的方框示意图。本发明实施例中的场景服务器10具有数据存储、传输、处理功能,如图1所示,场景服务器10包括:存储器11、处理器12、网络模块13和基于网络游戏影子角色的操作交互装置20。

存储器11、处理器12和网络模块13之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件互相之间可以通过一条或多条通讯总线或信号线实现电性连接。存储器11中存储有基于网络游戏影子角色的操作交互装置20,所述基于网络游戏影子角色的操作交互装置20包括至少一个可以软件或固件(firmware)的形式储存于所述存储器11中的软件功能模块,所述处理器12通过运行存储在存储器11内的软件程序以及模块,例如本发明实施例中的基于网络游戏影子角色的操作交互装置20,从而执行各种功能应用以及数据处理,即实现本发明实施例中的基于网络游戏影子角色的操作交互方法。

其中,所述存储器11可以是,但不限于,随机存取存储器(randomaccessmemory,ram),只读存储器(readonlymemory,rom),可编程只读存储器(programmableread-onlymemory,prom),可擦除只读存储器(erasableprogrammableread-onlymemory,eprom),电可擦除只读存储器(electricerasableprogrammableread-onlymemory,eeprom)等。其中,存储器11用于存储程序,所述处理器12在接收到执行指令后,执行所述程序。

所述处理器12可能是一种集成电路芯片,具有数据的处理能力。上述的处理器12可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等。可以实现或者执行本发明实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

网络模块13用于通过网络建立场景服务器10与其他通信终端设备之间的通信连接,实现网络信号及数据的收发操作。上述网络信号可包括无线信号或者有线信号。

可以理解,图1所示的结构仅为示意,场景服务器10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。

本发明实施例还提供一种计算机可读存储介质,所述可读存储介质包括计算机程序。所述计算机程序运行时控制所述可读存储介质所在场景服务器10执行下面的基于网络游戏影子角色的操作交互方法。

为便于后续说明,首先介绍几种类型的服务器:

1)逻辑服务器misc,角色登录游戏大区后,会在misc服务器群中生成一个影子角色,一般是根据负载均衡规则将影子角色生成在低负载的misc服务器中。逻辑服务器主要处理玩家的基础功能系统,如道具、任务等。

2)场景服务器scn,角色登录游戏大区后,实际生成的角色实体,玩家在游戏场景中的各种交互(如移动、技能、战斗、动作表情等)都是由场景服务器完成的。

3)消息队列服务器mq,是处理不同影子角色服务器之间的消息交互,消息队列是一种通用的用于解耦、减少服务器之间连接的服务器。

图2示出了本发明实施例所提供的一种基于网络游戏影子角色的操作交互方法的流程图。所述方法有关的流程所定义的方法步骤应用于场景服务器10,可以由所述处理器12实现。

在本实施例中,场景服务器10与多个逻辑服务器通信连接,为便于说明,将场景服务器设为scn,将逻辑服务器设为misci,其中,i为正整数,将消息队列服务器设为mq。

可以理解misci中预存有对应的影子角色数据,其中,影子角色数据的绑定由网关服务器、游戏控制服务器、misci、scn和mq共同完成。

下面将对图2所示的具体流程进行详细阐述:

步骤s21,响应用户输入的操作指令,根据操作指令从多个逻辑服务器中的每个逻辑服务器中查找出对应的影子角色数据。

具体地,scn通过mq先后从misci中查找出对应的影子角色数据,可以理解,查找影子角色数据的过程为异步查找。

例如,scn向mq发送查询misc1中的影子角色数据a1的查询请求,mq接收到查询请求,将查询请求发送至misc1,misc1接收到查询请求,查询影子角色数据a1的信息,若misc1中的影子角色数据a1的信息不完整,则需要申请数据库查询请求,通过mq发送到数据库服务器d中进行查询。若misc1中的影子角色数据a1的信息是完整的,则将影子角色数据a1的信息通过mq返回到scn。

scn在接收到影子角色数据a1的信息之后,才会继续向mq发送查询misc2中的影子角色数据a2的查询请求,以此类推,直到获得i个影子角色数据(a1~ai)。

步骤s22,对查找出的每个影子角色数据进行异步修改,获取朝找出的每个影子角色数据对应的逻辑服务器返回的修改结果。

scn检查a1~ai的状态,根据操作指令分别生成针对a1~ai的修改指令,并将修改指令异步发送至a1~ai对应的逻辑服务器。

例如,请结合参阅图3,通过mq将a1的修改指令(记为m1)发送至misc1,misc1接收到a1的修改指令,将a1的修改指令通过mq转发到数据库服务器d中,数据库服务器d接收到a1的修改指令,对a1的状态进行检查,如果满足当前操作要求,则修改a1的数据库信息,如果a1的状态有误,则不修改a1的数据库信息,d将修改结果(记为r1)通过mq返回misc1,misc1再通过mq返回给scn。

当scn接收到misc1通过mq返回的a1的修改结果后,才会进行a2的修改,以此类推,获得i个修改结果。

在本实施例中,修改结果包括修改成功的第一结果和修改失败的第二结果。

步骤s23,判断获取得到的多个修改结果中是否存在第二结果。

若存在,转向步骤s24。

若不存在,scn完成修改之后的a1~ai的交互操作。

步骤s24,控制返回所述第一结果所对应的多个逻辑服务器进行回滚操作。

例如,假设i=10,其中a4的修改结果为第二结果(修改失败),此时scn控制misc1、misc2、misc3、misc5、misc6、misc7、misc8、misc9和misc1进行回滚操作,具体地,以misc1为例:

scn向misc1发送回滚请求,misc1接收到回滚请求,锁定角色准确进行回滚,通过mq转发回滚请求到d,d接收到回滚请求,对修改之后的a1还原到修改之前的状态,然后通过mq向misc1返回回滚成功的通知,misc1将回滚成功的通知通过mq发送至scn,scn接收到回滚成功的通知,判定完成回滚操作。

如此,在影子角色数据出现修改失败时能够及时进行数据还原,避免后续的数据处理出现混乱。

在上述基础上,如图4所示,本发明实施例提供了一种基于网络游戏影子角色的操作交互装置20,所述基于网络游戏影子角色的操作交互装置20包括:影子角色数据查找模块21、影子角色数据修改模块22和判断模块23。

影子角色数据查找模块21,用于响应用户输入的操作指令,根据所述操作指令从所述多个逻辑服务器中的每个逻辑服务器中查找出对应的影子角色数据。

由于影子角色数据查找模块21和图2中步骤s21的实现原理类似,因此在此不作更多说明。

影子角色数据修改模块22,用于对查找出的每个影子角色数据进行异步修改,获取查找出的每个影子角色数据对应的逻辑服务器返回的修改结果,其中,修改结果包括修改成功的第一结果和修改失败的第二结果。

由于影子角色数据修改模块22和图2中步骤s22的实现原理类似,因此在此不作更多说明。

判断模块23,用于判断获取得到的多个修改结果中是否存在所述第二结果,若存在,控制返回所述第一结果所对应的多个逻辑服务器进行回滚操作。

由于判断模块23和图2中步骤s23和步骤s24的实现原理类似,因此在此不作更多说明。

综上,本发明实施例所提供的基于网络游戏影子角色的操作交互方法及装置,通过对场景服务器与多个逻辑服务器之间的交互进行设置,在同等服务器配置下提升了一倍以上的单个服务器大区用户承载能力,为跨大区游戏提供了基础支持,减少了用户数据在大区之间的转移开销,由于场景服务器移除了各种复杂逻辑系统,因此场景服务器能承载更多的用户,大大方便了各种逻辑系统功能开发,由于逻辑服务器没有角色之间的关联操作,因此逻辑服务器支持多开,能够提升当前大区的服务器总体承载用户的能力,在加开服务器的情况下能支撑更多的用户。

在本发明实施例所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置和方法实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,场景服务器10,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1