一种游戏同步方法和装置与流程

文档序号:15139989发布日期:2018-08-10 19:46阅读:181来源:国知局

本发明涉及计算机技术领域,具体涉及一种游戏同步方法和装置。



背景技术:

在mmorpg(massivelymultiplayeronline,大型多人在线)等网络游戏对在客户端和服务器端之间的游戏数据同步有着较高的要求,如果客户端的逻辑帧和服务器的逻辑帧不一致、或者出现网络延迟,就会造成不同客户端上同一角色的位置差异较大(客户端与服务端的角色存在位置差异,造成不同客户端看到同一个角色的位置差异),带来打不中目标等问题。另外,当客户端的逻辑帧率低于渲染帧率的情况下,会引起角色移动时不够平滑的问题。假如为了保证客户端移动平滑,而提高逻辑帧,服务端也不得不对应地提高逻辑帧的帧率,就会提高服务器的压力。



技术实现要素:

为了解决上述问题重点一个或多个,根据本公开的第一个方面,提供了一种游戏同步方法,包括以下步骤:s100,从服务端获取当前逻辑帧;s200,基于来自服务端的历史逻辑帧和当前逻辑帧,生成的预测逻辑帧;s300,基于当前逻辑帧和预测逻辑帧,生成当前逻辑帧和预测逻辑帧之间的一个或多个插入帧;s400,顺次渲染当前逻辑帧、渐变插入帧和预测逻辑帧;s500,当从服务端获取下一逻辑帧时,根据下一逻辑帧对当前渲染结果进行修正,其中一个和多个插入帧中的至少一部分不同于当前逻辑帧和预测逻辑帧。

进一步地,还包括以下步骤:s010,获取服务端的逻辑帧率;s020,获取客户端的逻辑帧率;假如服务端的逻辑帧率为n赫兹,客户端的逻辑帧率为m赫兹,则在当前逻辑帧和预测逻辑帧之间插入的插入帧的数量大于等于(m-n-1)。

进一步地,客户端的逻辑帧率m大于等于服务端的逻辑帧率n的2倍。

进一步地,步骤s500包括以下子步骤:s510,从服务端获取下一逻辑帧;s520,将下一逻辑帧插入待渲染的帧的队列的前列,并清除下一逻辑帧后的待渲染的帧。

进一步地,步骤s200包括以下子步骤:s210,获取历史逻辑帧中的角色历史位置和当前逻辑帧中的角色当前位置;s220,根据角色历史位置和角色当前位置的差值,以及服务端的逻辑帧率或客户端的逻辑帧率,计算出角色当前运动状态;s230,根据角色当前位置以及角色当前运动状态,计算角色预测位置;s240,基于当前逻辑帧生成预测逻辑帧,其中在预测逻辑帧中,角色位于角色预测位置,角色当前运动状态包括角色当前的运动速度和运动方向。

进一步地,步骤s300包括以下子步骤:s310,规划在角色当前位置和角色预测位置之间的预测最小路径;s320,在预测最小路径上等间距地生成一个或多个插入位置点;s330,基于当前逻辑帧和预测逻辑帧,生成当前逻辑帧和预测逻辑帧之间的一个或多个插入帧,其中在插入帧中的各渐变插入帧中,角色位于插入位置点。

根据本公开的第二个方面,提供了一种游戏同步系统,包括:第一模块,从服务端获取当前逻辑帧;第二模块,基于服务端的历史逻辑帧和当前逻辑帧,生成的预测逻辑帧;第三模块,基于当前逻辑帧和预测逻辑帧,生成当前逻辑帧和预测逻辑帧之间的一个或多个插入帧;第四模块,顺次渲染当前逻辑帧、渐变插入帧和预测逻辑帧;第五模块,当从服务端获取下一逻辑帧时,根据下一逻辑帧对当前渲染结果进行修正,其中一个和多个插入帧中的至少一部分不同于当前逻辑帧和预测逻辑帧。

进一步地,还包括:第六模块,获取服务端的逻辑帧率;第七模块,获取客户端的逻辑帧率;假如服务端的逻辑帧率为n赫兹,客户端的逻辑帧率为m赫兹,则在当前逻辑帧和预测逻辑帧之间插入的插入帧的数量大于等于(m-n-1)。

本发明的有益效果在于:通过预测角色的位置等,降低受限于服务器的帧率、同一个角色在不同客户端和服务端移动和位置不同步或者卡顿的问题。减少服务端每秒逻辑计算的频率,减少系统调用,从而降低服务端压力,提高性能。由于服务端逻辑帧降低,客户端接收到同步数据的频率也降低了,客户端也没有必要以高于服务端逻辑帧的频率,因此同时也减少了客户端压力。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本公开的一个或多个实施例的客户端的流程图;

图2是本公开的一个或多个实施例的流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

大型多人在线通常采用帧同步或者状态同步来实现作为客户端的玩家主机与作为服务端的游戏服务器(或者创建房间的玩家主机)之间的同步。帧同步常被rts(即时战略)游戏常采用。在游戏中同步的是玩家的操作指令,操作指令包含当前的帧索引。一般的流程是客户端上传操作到服务器端,服务器收到后并不计算游戏行为,而是转发到所有客户端。其优点在于,但是由于逻辑在客户端,反外挂压力大、无法避免开图挂。而状态同步常被rpg(角色扮演)游戏常采用。状态同步的一般的流程是客户端上传操作到服务器,服务器收到后计算游戏行为的结果,然后以广播的方式下发游戏中各种状态,客户端收到状态后再根据状态显示内容。逻辑计算包括角色移动、技能释放等,服务端每帧同步数据给客户端等。状态同步的优点在于服务器实现逻辑,安全性高,反外挂能力强,但对服务端的运算能力有着很高的要求。

以状态同步的同步方式为例,通常情况下服务端向各客户端广播的逻辑帧的帧率(例如10到20帧)低于客户端实际渲染的渲染帧的帧率(例如30到60帧)。客户端在接到服务端发出的逻辑帧后,在逻辑帧之间进行插值,以得到一个“平滑”的效果。作为插值的插入帧通常是对上一逻辑帧的简单复制,因此依然无法解决当客户端的渲染帧率远高于服务端的逻辑帧率时或者服务端在传输中丢帧时出现的卡顿现象。

参照图1和图2根据本公开的第一个方面的一种游戏同步方法,其包括以下步骤:s100,从服务端获取当前逻辑帧;s200,基于服务端的历史逻辑帧和当前逻辑帧,生成的预测逻辑帧;s300,基于当前逻辑帧和预测逻辑帧,生成当前逻辑帧和预测逻辑帧之间的一个或多个插入帧;s400,顺次渲染当前逻辑帧、渐变插入帧和预测逻辑帧;s500,当从服务端获取下一逻辑帧时,根据下一逻辑帧对当前渲染结果进行修正,其中一个和多个插入帧中的至少一部分不同于当前逻辑帧和预测逻辑帧。本方法通过预测逻辑计算(角色的位置等)的结果,生成预测逻辑帧和渐变的插入帧,可以有效地降低受限于服务器的帧率、同一个角色在不同客户端和服务端移动和位置不同步或者卡顿的问题。

在本公开的一个或多个实施例中,还包括以下步骤:s010,获取服务端的逻辑帧率;s020,获取客户端的逻辑帧率;假如服务端的逻辑帧率为n赫兹,客户端的逻辑帧率为m赫兹,则在当前逻辑帧和预测逻辑帧之间插入的插入帧的数量大于等于(m-n-1)。由此可降低在丢帧时发生的卡顿。

在本公开的一个或多个实施例中,客户端的逻辑帧率m可以大于等于服务端的逻辑帧率n的2倍。从而进一步降低服务端的运算开销。

在本公开的一个或多个实施例中,步骤s500可以包括以下子步骤:s510,从服务端获取下一逻辑帧;s520,将下一逻辑帧插入待渲染的帧的队列的前列(例如作为队列的第一帧,即当前渲染帧),并清除下一逻辑帧后的待渲染的帧。从而完成对根据预测得到的当前渲染结果的修正。

在本公开的一个或多个实施例中,步骤s200包括以下子步骤:s210,获取历史逻辑帧中的角色历史位置和当前逻辑帧中的角色当前位置;s220,根据角色历史位置和角色当前位置的差值,以及服务端的逻辑帧率或客户端的逻辑帧率,计算出角色当前运动状态;s230,根据角色当前位置以及角色当前运动状态,计算角色预测位置;s240,基于当前逻辑帧生成预测逻辑帧,其中在预测逻辑帧中,角色位于角色预测位置,角色当前运动状态包括角色当前的运动速度和运动方向。具体而言,例如客户端根据以前保存的一个或多个历史逻辑帧中的角色位置(坐标)和当前逻辑帧中角色的位置(坐标)的差值计算出游戏画面区域内所有角色的当前的运动速度和运动方向等,然后在当前帧的基础上结合角色的运动速度和运动方向,生成包括了在指定时间之后角色预测位置的预测逻辑帧,该预测逻辑帧是在从服务端实际接收到的当前逻辑帧的基础上,更新了对画面显示影响较大的角色运动,以及与角色运动相关的画面视角的滚动等。其中,该指定时间与服务端和客户端的帧率差有关,可由本领域技术人员适宜选择。此外,对预测逻辑帧中的对画面显示影响较大的视觉元素进行预测时,也可以借助大数据分析的方式分析玩家的行为习惯,建立玩家行为习惯决策器,例如,基于当前逻辑帧的动态视觉元素,建立对应的特征向量;利用历史逻辑帧形成训练集,建立用于预测逻辑帧中动态视觉元素的分类模型;将对应当前逻辑帧的特征向量代入分类模型,预测下一逻辑帧中的动态视觉元素的状态。从而根据历史逻辑帧和当前逻辑帧来预测较高概率的下一帧的视觉元素配置。

此外,步骤s300还可以包括以下子步骤:s310,规划在角色当前位置和角色预测位置之间的预测最小路径;s320,在预测最小路径上等间距地生成一个或多个插入位置点;s330,基于当前逻辑帧和预测逻辑帧,生成当前逻辑帧和预测逻辑帧之间的一个或多个插入帧,其中在插入帧中的各渐变插入帧中,角色位于插入位置点。一个和多个插入帧不同于当前逻辑帧和预测逻辑帧。由此可以保证客户端显示效果的平滑性,并降低客户端的运算量。

例如,假定服务端的当前逻辑帧的帧率为n赫兹;客户端的渲染帧率为m赫兹;则客户端每帧按照以下规则进行处理ratio=m/n。在此pos(x)表示角色(包括玩家可控制的角色和npc)的当前位置,dir(x)表示角色的当前方向,且假设角色的运动轨迹上没有不可到达的区域。

1.第i帧:

pos(i)=沿着pos(0)到dest的方向dir(i)以v/ratio的速度移动第(i+1)帧;

pos(i+1)=沿着pos(i)到dest的方向dir(i+1)以v/ratio的速度移动第(i+2)帧;

pos(i+2)=沿着pos(i+1)到dest的方向dir(i+2)以v/ratio的速度移动;

.......

第(i+x)帧,(i+x)=ratio

pos(i+x)=沿着pos(0)到dest的方向dir(i+x)以v的速度移动;

2.在0到i+x帧里,通过设置客户端标识禁止中断移动,以保证和服务端最终结果一致;

3.在0到i+x帧里,如果客户端的移动将无视障碍,在第i+x帧,需要处理障碍的影响

4.在0到i+x帧里,如果受到眩晕、定身等限制移动的效果时,需要立即停止移动,保持视觉效果,此时会出现和服务端的位置差;

5.通过位置修正机制,对客户端的位置进行修正。

根据本公开的第二实施例的一种游戏同步系统,其包括:第一模块,从服务端获取当前逻辑帧;第二模块,基于服务端的历史逻辑帧和当前逻辑帧,生成的预测逻辑帧;第三模块,基于当前逻辑帧和预测逻辑帧,生成当前逻辑帧和预测逻辑帧之间的一个或多个插入帧;第四模块,顺次渲染当前逻辑帧、渐变插入帧和预测逻辑帧;第五模块,当从服务端获取下一逻辑帧时,根据下一逻辑帧对当前渲染结果进行修正,其中一个和多个插入帧包括不同于当前逻辑帧和预测逻辑帧的渐变插入帧。

在本公开的一个或多个实施例中,还包括:第六模块,获取服务端的逻辑帧率;第七模块,获取客户端的逻辑帧率;假如服务端的逻辑帧率为n赫兹,客户端的逻辑帧率为m赫兹,则在当前逻辑帧和预测逻辑帧之间插入的插入帧的数量大于等于(m-n-1)。本公开的第二实施例的实施方式与第一实施例的运行方法基本相同,故在此不再赘言。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接相合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在二个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在二个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

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