游戏状态同步方法及系统与流程

文档序号:14718416发布日期:2018-06-16 07:27阅读:575来源:国知局
游戏状态同步方法及系统与流程

本发明涉及信息处理技术领域,具体而言,涉及一种游戏状态同步方法及系统。



背景技术:

在网络游戏中,信息的同步处理是非常重要的,其关系到不同客户端设备之间信息表现的统一,目前,游戏状态同步是广泛应用于大型网络游戏的一种信息同步方式。

在现有技术中,通常由客户端将每帧操作上传到服务器,服务器接收每帧操作后进行游戏行为状态计算,并以广播的方式将计算的状态结果下发给游戏中的各个客户端设备,各个客户端设备接收到状态结果后根据状态结果中的信息进行同步显示。

现有技术的缺点在于,由于服务器需要计算客户端设备上传的每帧操作,当需要计算的用户操作比较复杂时,服务器的运算负担会显著增加,服务器的运算效率难以提高,服务器能够承载的客户端设备的上限数量变低,严重影响用户体验。



技术实现要素:

为了克服现有技术中的上述不足,本发明实施例提供一种游戏状态同步方法及系统。

本发明实施例提供一种游戏状态同步方法,所述方法包括:

客户端设备在检测到用户操作时,生成包括当前游戏状态信息的同步消息,并将所述同步消息发送给服务器;

服务器根据所述同步消息进行误差检测,并得到检测结果;

当检测结果为通过时,服务器根据所述同步消息中的当前游戏状态信息进行游戏状态更新,并将所述当前游戏状态信息同步发送给其他客户端设备,以实现游戏状态同步。

本发明实施例还提供一种游戏状态同步系统,所述系统包括相互通信连接的服务器及至少一个客户端设备,所述客户端设备包括信息生成模块,所述服务器包括误差处理模块及同步处理模块;

当客户端设备检测到用户操作时,所述信息生成模块,用于生成包括当前游戏状态信息的同步消息,并将所述同步消息发送给服务器;

所述误差处理模块,用于根据所述同步消息进行误差检测,并得到检测结果;

当检测结果为通过时,所述同步处理模块,用于根据所述同步消息中的当前游戏状态信息进行游戏状态更新,并将所述当前游戏状态信息同步发送给其他客户端设备,以实现游戏状态同步。

相对于现有技术而言,本发明具有以下有益效果:

本发明实施例提供一种游戏状态同步方法及系统。所述方法包括:客户端设备在检测到用户操作时,生成包括当前游戏状态信息的同步消息,并将所述同步消息发送给服务器。服务器根据所述同步消息进行误差检测,并得到检测结果。当检测结果为通过时,服务器根据所述同步消息中的当前游戏状态信息进行游戏状态更新,并将所述当前游戏状态信息同步发送给其他客户端设备,以实现游戏状态同步。由此,客户端设备只有在检测到用户输入操作时,才会生成同步消息发送给服务器进行处理,客户端设备可分担部分计算操作,服务器无需对每帧操作都进行计算处理,可有效降低服务器的运算负担,提高服务器的运算效率。

附图说明

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

图1是本发明实施例提供的游戏状态同步系统的方框示意图。

图2是本发明实施例提供的图1所示的服务器的方框示意图。

图3是本发明实施例提供的图1所示的客户端设备的方框示意图。

图4是本发明第一实施例提供的游戏状态同步方法的步骤流程图之一。

图5为本发明第一实施例提供的图4中步骤S110的子步骤流程示意图。

图6为本发明第一实施例提供的图4中步骤S120的子步骤的流程示意图。

图7为本发明第一实施例提供的图4中步骤S130的子步骤的流程示意图。

图8是本发明第一实施例提供的游戏状态同步方法的步骤流程图之二。

图9为本发明第二实施例提供的游戏状态同步系统包括的功能模块图。

图标:10-游戏状态同步系统;100-服务器;110-第一存储器;120-第一处理器;130-第一网络模块;200-客户端设备;210-第二存储器;220-第二处理器;230-第二网络模块;240-显示器;310-信息生成模块;320-误差处理模块;330-同步处理模块;340-状态更正模块。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

请参照图1,图1是本发明实施例提供的游戏状态同步系统10的方框示意图。所述游戏状态同步系统10包括相互通信连接的服务器100及至少一个客户端设备200。

在本实施例中,所述客户端设备200可以是,但不限于,智能手机、平板电脑、PC、便携式计算机等。

请参照图2,图2是本发明实施例提供的图1所示的服务器100的方框示意图。所述服务器100包括第一存储器110、第一处理器120及第一网络模块130。

所述第一存储器110、第一处理器120及第一网络模块130相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通信总线或信号线实现电性连接。第一存储器110中存储有至少一个能以软件或固件(firmware)的形式进行保存的软件功能模块,所述第一处理器120通过运行存储在第一存储器110内的软件程序以及模块,从而执行各种功能应用以及数据处理。

其中,所述第一存储器110可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-Only Memory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。上述第一存储器110内的软件程序以及模块还可包括操作系统,其可包括各种用于管理系统任务(例如内存管理、存储设备控制、电源管理等)的软件组件和/或驱动,并可与各种硬件或软件组件相互通信,从而提供其他软件组件的运行环境。

所述第一处理器120可以是一种集成电路芯片,具有信号的处理能力。上述的第一处理器120可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等。还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。

第一网络模块130用于通过网络建立服务器100与客户端设备200等其他外部设备之间的通信连接,实现网络信号及数据的收发操作。

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

请参照图3,图3是本发明实施例提供的图1所示的客户端设备200的方框示意图。所述客户端设备200包括第二存储器210、第二处理器220、第二网络模块230及显示器240。

所述第二存储器210中存储有至少一个能以软件或固件(firmware)的形式进行保存的软件功能模块,所述第二处理器220通过运行存储在第二存储器210内的软件程序以及模块,从而执行各种功能应用以及数据处理。

所述显示器240用于对游戏场景界面、游戏状态信息等内容进行显示。

其中,所述第二存储器210、第二处理器220及第二网络模块230与图2中的第一存储器110、第一处理器120及第一网络模块130的硬件配置相同,在此不再一一介绍。图3所述的结构仅为示意,客户端设备200还可包括比图3所示更多或者更少的组件,或者具有与图3所示不同的配置。图3中所示的各组件可以采用硬件、软件或其组合实现。

第一实施例

请参照图4,图4是本发明第一实施例提供的游戏状态同步方法的步骤流程图之一。所述游戏状态同步方法应用于上述的游戏状态同步系统10,所述游戏状态同步系统10包括相互通信连接的服务器100及至少一个客户端设备200。下面对游戏状态同步方法的步骤流程进行详细阐述。所述方法包括:步骤S110、步骤S120及步骤S130。

步骤S110,客户端设备200在检测到用户操作时,生成包括当前游戏状态信息的同步消息,并将所述同步消息发送给服务器100。

请参照图5,图5为本发明第一实施例提供的图4中步骤S110的子步骤流程示意图。所述步骤S110包括子步骤S111、子步骤S112、子步骤S113、子步骤S114及子步骤S115。

子步骤S111,获取当前用户操作信息。

在本实施例中,当客户端设备200检测到用户输入操作时,所述客户端设备200基于用户当前输入的操作得到当前用户操作信息。

子步骤S112,根据所述当前用户操作信息进行状态演算,得到当前游戏状态信息。

在本实施例中,所述当前游戏状态信息可以包括,但不限于,在游戏场景中,游戏角色位置变化的状态信息、游戏角色移动速度信息、游戏角色移动方向信息等。

子步骤S113,生成包括所述当前用户操作信息及当前游戏状态信息的同步消息。

在本实施例中,所述客户端设备200基于当前用户操作生成一条对应的同步消息,所述同步消息中携带有所述当前用户操作信息及当前游戏状态信息(可记为Sc)。

子步骤S114,根据上次发送同步消息的时间及当前生成所述同步消息的时间计算得到信息传输时间间隔,并将所述信息传输时间间隔携带到所述同步消息中。

在本实施例中,所述客户端设备200根据上次发送同步消息的时间(比如,T0)及当前生成所述同步消息的时间(比如,Tc)计算得到信息传输时间间隔(比如,T)。其中,T=Tc-T0。

在本实施例中,所述客户端设备200可从服务器100获取所述上次发送同步消息的时间,或者,所述客户端设备200可在上次发送同步消息时自行记录时间T0。

子步骤S115,将所述同步消息发送给服务器100。

在本实施例中,所述客户端设备200将携带有所述信息传输时间间隔、当前用户操作信息及当前游戏状态信息的同步消息发送给服务器100。

在本实施例中,所述客户端设备200只有在检测到用户输入新的操作时,才会生成同步消息发送给服务器100。若未检测到用户输入操作或用户输入的操作未发生变化,所述客户端设备200可自行对每帧操作进行计算处理并实时更新游戏状态。

例如,在游戏场景中,游戏角色当前处于前进状态且未发生状态变化,所述客户端设备200可自行对前进的每帧操作进行计算处理,并实时更新状态以显示给用户。当用户输入的操作由前进转换成其他操作(比如,停止、转弯、跳跃等)时,所述客户端设备200检测到用户操作发生变化,可生成对应的同步消息发送给服务器100进行处理。由此,由客户端设备200来分担部分计算操作,服务器100不需要对每帧操作都进行计算处理,可有效降低服务器100的运算负担,提高服务器100的运算效率。

在本实施例中,所述客户端设备200进行同步消息发送处理的C++语句示例如下。

步骤S120,服务器100根据所述同步消息进行误差检测,并得到检测结果。

请参照图6,图6为本发明第一实施例提供的图4中步骤S120的子步骤的流程示意图。所述步骤S120包括子步骤S121、子步骤S122、子步骤S123、子步骤S124、子步骤S125及子步骤S126。

子步骤S121,获取所述服务器100中当前存储的目标游戏状态信息。

在本实施例中,所述服务器100获取所述服务器100中当前存储的目标游戏状态信息(可记为S0)。其中,所述目标游戏状态信息是指根据上一次用户操作演算得到的游戏状态信息,所述目标游戏状态信息可存储于数据库中。

子步骤S122,对所述同步消息进行解析,获取信息传输时间间隔、当前用户操作信息及当前游戏状态信息。

在本实施例中,所述服务器100对所述同步消息进行解析,获取所述同步消息中携带的信息传输时间间隔(T)、当前用户操作信息及当前游戏状态信息(Sc)。

子步骤S123,根据所述目标游戏状态信息、信息传输时间间隔及当前用户操作信息进行状态增量演算,得到演算游戏状态信息。

在本实施例中,所述服务器100根据所述目标游戏状态信息(S0)、信息传输时间间隔(T)及当前用户操作信息进行状态增量演算,得到演算游戏状态信息(可记为Ss)。

子步骤S124,对所述演算游戏状态信息及当前游戏状态信息进行误差计算,并检测计算得到的误差结果是否小于预设误差阈值。

在本实施例中,所述服务器100对经过状态增量演算得到的所述演算游戏状态信息(Ss)及所述同步消息中携带的所述当前游戏状态信息(Sc)进行误差计算,并检测计算得到的误差结果是否小于预设误差阈值。其中,所述预设误差阈值可根据实际需求进行设定。

当小于预设误差阈值时,执行子步骤S125,判定检测结果为通过。

在本实施例中,当小于预设误差阈值时,表明所述客户端设备200计算的当前游戏状态信息(Sc)通过检测,所述服务器100可采用所述当前游戏状态信息(Sc)。

当不小于预设误差阈值时,执行子步骤S126,判定检测结果为未通过。

在本实施例中,当不小于预设误差阈值时,表明误差过大,所述客户端设备200计算的当前游戏状态信息(Sc)未通过检测。

在现有技术中,通常服务器100计算的结果会强制反馈给客户端设备200,客户端设备200需要根据服务器100计算的结果进行相应调整。由于误差是不可避免的,服务器100的计算结果与客户端设备200的计算结果总会存在误差,由此,客户端设备200在进行调整时,可能会出现游戏卡顿的情况,用户体验感不好。

在本实施例中,本方案通过设置误差检测操作,可避免将服务器100的计算结果强制反馈给客户端设备200。当客户端设备200计算的当前游戏状态信息(Sc)处于误差可接受范围内时,服务器100可直接采用客户端设备200的计算结果,客户端设备200无需根据服务器100的计算结果进行频繁调整。由此,可减少游戏卡顿的情况,提升用户体验。

在本实施例中,所述服务器100进行误差检测处理的C++语句示例如下。

步骤S130,当检测结果为通过时,服务器100根据所述同步消息中的当前游戏状态信息进行游戏状态更新,并将所述当前游戏状态信息同步发送给其他客户端设备200,以实现游戏状态同步。

请参照图7,图7为本发明第一实施例提供的图4中步骤S130的子步骤的流程示意图。所述步骤S130包括子步骤S131及子步骤S132。

子步骤S131,将所述服务器100中当前存储的目标游戏状态信息更新为所述当前游戏状态信息。

在本实施例中,当检测结果为通过时,服务器100将所述服务器100中当前存储的目标游戏状态信息(S0)更新为所述当前游戏状态信息(Sc),即,所述服务器100将Sc的值赋给S0。

子步骤S132,将所述当前游戏状态信息同步发送给其他客户端设备200,以使其他客户端设备200进行游戏状态更新,实现游戏状态同步。

在本实施例中,服务器100将所述当前游戏状态信息(Sc)以广播的形式同步发送给其他客户端设备200,所述其他客户端设备200可根据所述当前游戏状态信息(Sc)进行游戏状态更新,实现游戏状态同步。

请参照图8,图8是本发明第一实施例提供的游戏状态同步方法的步骤流程图之二。所述方法还包括:步骤S140、步骤S150及步骤S160。

步骤S140,当检测结果为未通过时,服务器100将当前存储的目标游戏状态信息更新为所述演算游戏状态信息。

在本实施例中,当检测结果为未通过时,所述服务器100将当前存储的目标游戏状态信息(S0)更新为所述演算游戏状态信息(Ss),即,所述服务器100将Ss的值赋给S0。同时,所述服务器100会丢弃客户端设备200计算的当前游戏状态信息(Sc)。

步骤S150,所述服务器100将所述演算游戏状态信息同步发送给所述客户端设备200及其他客户端设备200,以实现游戏状态同步。

在本实施例中,所述服务器100将生成一条携带有所述演算游戏状态信息(Ss)的回复消息,并将所述回复消息发送给所述客户端设备200。同时,所述服务器100将所述演算游戏状态信息(Ss)发送给其他客户端设备200,以使其他客户端设备200可根据所述演算游戏状态信息(Ss)进行游戏状态更新,实现游戏状态同步。

在本实施例中,根据误差检测结果进行对应处理的C++语句示例如下。

步骤S160,所述客户端设备200接收所述演算游戏状态信息,并根据所述演算游戏状态信息进行游戏状态更正处理。

在本实施例中,所述客户端设备200接收所述服务器100发送的回复消息,解析得到所述演算游戏状态信息(Ss),并根据所述演算游戏状态信息(Ss)进行游戏状态更正。

第二实施例

请参照图9,图9为本发明第二实施例提供的游戏状态同步系统10包括的功能模块图。所述系统包括相互通信连接的服务器100及至少一个客户端设备200,其中,所述客户端设备200包括信息生成模块310,所述服务器100包括误差处理模块320及同步处理模块330。

当客户端设备200检测到用户操作时,所述信息生成模块310,用于生成包括当前游戏状态信息的同步消息,并将所述同步消息发送给服务器100。

在本实施例中,所述信息生成模块310设置于客户端设备200中,由所述客户端设备200的第二处理器220执行。所述信息生成模块310用于执行图4中的步骤S110,关于所述信息生成模块310的具体描述可以参照步骤S110的描述。

所述误差处理模块320,用于根据所述同步消息进行误差检测,并得到检测结果。

在本实施例中,所述误差处理模块320设置于服务器100中,由服务器100的第一处理器120执行。所述误差处理模块320用于执行图4中的步骤S120,关于所述误差处理模块320的具体描述可以参照步骤S120的描述。

当检测结果为通过时,所述同步处理模块330,用于根据所述同步消息中的当前游戏状态信息进行游戏状态更新,并将所述当前游戏状态信息同步发送给其他客户端设备200,以实现游戏状态同步。

当检测结果为未通过时,所述同步处理模块330,还用于将所述服务器100中当前存储的目标游戏状态信息更新为所述当前游戏状态信息。

所述同步处理模块330,还用于将所述当前游戏状态信息同步发送给其他客户端设备200,以使其他客户端设备200进行游戏状态更新,实现游戏状态同步。

在本实施例中,所述同步处理模块330设置于服务器100中,由服务器100的第一处理器120执行。所述同步处理模块330用于执行图4中的步骤S130,以及图8中的步骤S140及步骤S150,关于所述同步处理模块330的具体描述可以参照步骤S130-步骤S150的描述。

请再次参照图9,所述客户端设备200还包括状态更正模块340。

所述状态更正模块340,用于接收服务器100发送的所述演算游戏状态信息,并根据所述演算游戏状态信息进行游戏状态更正处理。

在本实施例中,所述状态更正模块340设置于客户端设备200中,由所述客户端设备200的第二处理器220执行。所述状态更正模块340用于执行图8中的步骤S160,关于所述状态更正模块340的具体描述可以参照步骤S160的描述。

综上所述,本发明实施例提供一种游戏状态同步方法及系统。所述方法包括:客户端设备在检测到用户操作时,生成包括当前游戏状态信息的同步消息,并将所述同步消息发送给服务器。服务器根据所述同步消息进行误差检测,并得到检测结果。当检测结果为通过时,服务器根据所述同步消息中的当前游戏状态信息进行游戏状态更新,并将所述当前游戏状态信息同步发送给其他客户端设备,以实现游戏状态同步。

由此,客户端设备只有在检测到用户输入操作时,才会生成同步消息发送给服务器进行处理,客户端设备可分担部分计算操作,服务器无需对每帧操作都进行计算处理,可有效降低服务器的运算负担,提高服务器的运算效率。

并且,通过设置误差检测操作,可避免将服务器的计算结果强制反馈给客户端设备。当客户端设备的计算结果处于误差可接受范围内时,服务器可直接采用客户端设备的计算结果,客户端设备无需进行频繁调整。可有效减少游戏卡顿的情况,提升用户体验。

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

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