一种网络游戏服务器端行走系统的解决方法和装置 【技术领域】
本发明实施例涉及网络在线游戏的算法设计领域,特别涉及一种网络游戏服务器端行走系统的解决方法和装置。
背景技术
角色扮演类多人在线网络游戏(MMORPG)中,行走是最基本的功能之一。由于玩家的行走需要具备连续性,客户端需要向服务器端不断的发送玩家行走动作的实时参数,以便保证玩家的动作可以正常的在服务器端被实现。同时,为了客户端能够及时的将服务器的实现结果传递给玩家,服务器端在行走指令被实现之后必须通知客户端实现后的结果。
由于服务器所需要承载大量的玩家同时在线游戏,而游戏中各种动作指令及服务器对其作出的响应所带来的频繁数据发送,会在大量玩家的同时作用下带来极其庞大的网络流量,甚至超出服务器硬件的承载能力。就目前的研究表明,用于网络游戏服务器端支持的服务器,其网卡承载能力往往是限制服务器承载能力的瓶颈。当网卡达到满负荷运转时,服务器的CPU和内存的占用率仅仅会达到上限10%~20%。因此,任何对于网络通信进行的优化和算法都会很大程度的为运营商带来成本上的节约,而作为游戏中最频繁出现的行走指令无疑是最好的优化点。
【发明内容】
本发明实施例提供一种网络游戏服务器端行走系统的解决方法和装置,以提高服务器的实际处理效果,减轻服务器的网络压力。
为了达到上述目的,本发明实施例提供了一种网络游戏服务器端行走系统的解决方法,包括:
指令接收,通过指令鉴定环节来确定指令的合法性;
指令处理,依照指令的内容和传输的数据调用动作预测算法函数和延时检测算法函数,完成指令的处理;
指令接收确认,通过结果应答算法函数来实现指令的接收确认。
其中动作预测算法函数和延时检测算法函数使一个行走处理流程可以处理一次行走的连续指令;
其中结果应答算法函数将指令接收到的回复数据与指令执行后的效果数据进行整合。
另一方面本发明实施例还提供了一种网络游戏服务器端行走系统的解决装置,包括:
指令接收模块,用于通过指令鉴定模块来确定指令的合法性;
指令处理模块,用于依照指令的内容和传输的数据调用动作预测算法函数和延时检测算法函数,完成指令的处理;
指令接收确认模块,用于通过结果应答算法函数来实现指令的接收确认。
其中,所述指令处理模块,具体用于依照动作预测算法和延时检测算法使一个行走处理流程可以处理一次行走的连续指令;
其中,所述指令接收模块,具体用于通过结果应答算法函数将指令接收到的回复数据与指令执行后的效果数据进行整合后发送。
与现有技术相比,本发明实施例具有以下优点:本发明实施例,通过动作预测算法来达到将原有持续性指令变为间断性指令的效果,通过延时检测算法来达到行走系统在间断性指令系统下的网络适应性,通过结果应答算法来达到减少反馈用数据包的目的,使服务器处理压力小,网络占用少,玩家体验效果好。
【附图说明】
图1为本发明实施例整个过程的流程图;
图2为本发明实施例指令接收阶段的流程图;
图3为本发明实施例指令处理阶段的流程图;
图4为本发明实施例指令校验的流程图;
图5为本发明实施例指令接收确阶段认的流程图;
图6为本发明实施例装置的流程图。
【具体实施方式】
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部地实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的范围。
本发明提供了一种网络游戏服务器端行走系统的解决方法和装置。对于网络游戏服务器端行走系统,现有技术中,每一条行走指令的处理都要开启一个新的行走流程来处理,本实施例中,行走流程是按照“一次行走”来开启的,并通过算法对指令和移动校验进行优化,具体包括以下步骤:
如图1所示,为本发明实施例整个过程的流程图,具体包括:
步骤101,指令接收阶段通过指令鉴定环节来确定指令的合法性;
步骤102,指令处理阶段通过依照指令的内容以及动作预测算法和延时检测算法来完成指令的处理;
步骤103,指令接收确认阶段通过结果应答算法来完成指令接收确认。
如图2所述,为本发明实施例指令接收阶段的流程图,具体包括:
步骤201,客户端向服务器端发送移动指令数据包,服务器端对数据包进行解析并发送至服务器游戏处理软件的接收模块;
步骤202,接收模块对接收到的数据进行解析,分析该数据的合法性,并将合法的数据依照指令发送至用户指令接口模块;
步骤203,用户指令接口模块在获得指令输入后,检查指令的格式,解析并检查指令参数。当格式正确,参数合理时调用行走指令内部函数接口,传递参数。
上述指令鉴定流程,客户端向服务器端发送行走指令数据包,服务器端系统对获得的数据包进行解析并发送到接收模块,接收模块对数据解析并分析数据的合法性,然后发送至用户指令接口,用户指令接口对数据包解析并分析数据结构和参数的合法性,最后将参数发送至行走指令内部函数接口。
如图3所示,为本发明实施例指令处理阶段的流程图,具体包括:
步骤301,行走指令内部函数通过接口获得参数后,检查该玩家的行走状态。具体包括:
(1)当玩家处于停止状态时,函数会启动玩家的行走循环流程,实现玩家的行走动作;
(2)当玩家处于行走状态时,函数会向行走循环流程检查当前指令与预测指令的相符性,如果相符,则继续该循环;如果不符,则停止该循环,并使用新的指令参数重新启动行走循环。
其中,预测指令指的就是动作预测算法。当玩家在行走状态时,允许服务器端在未收到客户端发送的继续运动指令前,继续让玩家沿现有方向和速度进行前进,并在指令实际获得时将其作为已处理指令进行操作。
步骤302,当行走循环运行时,会依照设定时间来发送玩家现在所处位置的数据包给客户端,同时根据延时检测的具体设定,来判断是否停止该行走循环的运行。
其中,延时检测是根据延时检测算法来实现的。当一个动作预测被执行后,我们会检测该指令的预测是否正确,如果在延时检测时间内未发现指令或者发现指令与要求不同,则立刻停止移动,从而修正动作预测的错误结果。即行走动作是靠指令发出的,而停止行走的动作是自动生效的。
具体的,指令校验的方法分为单步校验和历史校验两部分:
如图4所示,为本发明实施例指令校验的流程图。
步骤401,单步校验:校验模块将会对现有数据和上一条数据相比,并判断以下条件:
(1)在连续触发的情况下,行走方向是相同的;
(2)位置是相邻的;
(3)收到指令的时刻与上条的时刻的间隔,和连续行走的指令间理论时间间隔之偏差,在合理范围以内(比如[±100ms])的,则认为校验通过。否则认为未通过。
如果上述(1)条件成立,且(3)中的时间间隔偏差超过了某一较理想的限度(比如±[50ms,100ms]),则认为出现了一次不良数据,并将出现次数进行累计,用于历史校验。同时,换算获得该时刻的瞬时速度,记录以备历史校验过程查验。
步骤402,历史校验:
速度检查:检测出此刻的行走速度,如果速度大于理想值一定程度(如X=10%),则不能通过历史校验。检测速度的方法为:
方法1:将当次数据与之前第n次的数据比较,将位置偏差和时间间隔之比作为行走至该点时以及行走该段路程的平均速度。
方法2:对近n步的单步校验所保存的各点瞬时速度求平均值,作为行走该段路程的平均速度。
上述X值可根据近n步中产生不良数据的次数多少而动态调整。
穿越检查:仅在单步校验条件(2)不满足,即指令消息丢失时,且仅当与上调指令相差在3格以内的情况下,才进行穿越检查。否则不能通过,并直接拉回到历史数据中最新的位置。
在当次数据与历史数据中最新位置数据对应的两个位置中间,如果没有阻挡性障碍,则检查通过。否则不能通过。
通过了速度检查和穿越检查的数据,可以通过历史校验。
总体来说动作预测算法函数和延时检测算法函数共同使一个行走处理流程可以处理一次行走的连续指令。
如图5所示,为本发明指令接收确阶段认的流程图,具体包括:
步骤501,整合指令接收到的回复数据和指令执行后的效果数据。
其中,整合指令接收到的回复数据和指令执行后的效果数据是通过结果应答算法实现的。
步骤502,将整合后的数据发送给服务器。
上述指令接收确认流程,将指令接收到的回复数据和指令执行后的效果数据进行整合后发送,通过对两个数据的整合,使得服务器发送的数据包数量降低,从而减轻了服务器的网络流量负担,很大程度上减少了网络延时对于玩家体验的影响。
如图6所示,为本发明实施例装置的流程图,具体包括:
指令接收模块601,用于通过指令鉴定来确定指令的合法性;
指令处理模块602,用于依照指令的内容和传输的数据调用动作预测算法函数和延时检测算法函数,完成指令的处理;
指令接收确认模块603,用于通过结果应答算法函数来实现指令的接收确认。
其中,指令处理模块602,具体用于依照动作预测算法函数和延时检测算法函数使一个行走处理流程可以处理一次行走的连续指令。
其中,指令接收确认模块603,具体用于通过结果应答算法函数将指令接收到的回复数据与指令执行后的效果数据进行整合后发送。
上述实施例中,客户端向服务器端发送数据包,数据通过服务器端指令接收模块601接收并鉴定其合法性;如果合法则将指令传送到指令处理模块602,通过动作预测算法函数和延时检测算法函数完成对指令的处理;最后将处理后的指令发送到指令接收确认模块603,通过结果应答算法函数将指令接收到的回复数据与指令执行后的效果数据进行整合后发送,完成一次行走处理流程。
最后应说明的是:以上实施例仅用以说明本发明的技术方案而非对其进行限制,尽管参照较佳实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对本发明的技术方案进行修改或者等同替换,而这些修改或者等同替换亦不能使修改后的技术方案脱离本发明技术方案的精神和范围。