一种基于时间戳的客户端与服务器端场景同步方法与流程

文档序号:17481801发布日期:2019-04-20 06:30阅读:1174来源:国知局
一种基于时间戳的客户端与服务器端场景同步方法与流程

本发明属于网络游戏技术领域,具体涉及一种基于时间戳的客户端与服务器端场景同步方法。



背景技术:

多人联网游戏(如捕鱼游戏)等需要多个玩家在同一个场景中游戏互动,因此需要多个客户端与服务器同步游戏场景,即多个玩家需要在自己的客户端设备上看到相同的游戏场景。

由服务器端推送数据用于更新渲染场景内元素从而更新渲染的方式要求较高的通讯可靠性和高度的一致性。

现有技术中,游戏客户端每获取一个游戏操作指令,将所述游戏操作指令加入上传队列中;每隔第一预定时间将所述上传队列中的游戏操作指令加入上传数据包中,并向游戏服务器发送所述上传数据包;接收所述游戏服务器每隔第二预定时间发送的下发数据包;根据所述下发数据包,从所述上传队列中删除所述游戏服务器已接收的游戏操作指令;并根据所述下发数据包,控制游戏表现。

现有技术的缺点在于,由于客户端需要等待服务器下发的帧数据块,因此会有频繁的网络交互和数据通信才能流畅的更新客户端的场景效果。如果网络延迟较大,可能导致界面的卡顿甚至卡死。



技术实现要素:

为克服上述现有技术的不足,本发明提供了一种基于时间戳的客户端与服务器端场景同步方法。本发明则提供了一种较少网络数据交互下的客户端和服务器场景同步方法,从而保证了游戏的流畅性。

本发明提供的基于时间戳的客户端与服务器端场景同步方法,包括以下步骤:

玩家登陆客户端,与服务器建立网络连接;

客户端通过选择进入游戏场景,向服务器端发送消息告知服务器端,客户端有新玩家进入游戏场景;

服务器端接收到客户端进入场景的通知后,给客户端一个应答消息,所述应答消息中包含当前服务器场景的时间戳;

客户端即以这个时间戳作为与服务器同步的一个时间;

服务器端按照预定时间间隔,通过配置或算法得出场景中元素新的状态;

客户端按照和服务器端相同的时间间隔t通过相同的配置或算法得到场景中元素新的状态。

优选地,客户端和服务器端采用同一配置文件用于表示游戏场景中某一元素路径的动态变化。

优选地,客户端和服务器端采用的配置文件中包括但不限于以下数据:

序号,用于按照预定时间间隔逐条记录数据;

角度偏移度数及方向,正数为顺时针,负值逆时针;

速度的倍率,在基础速度下的倍率系数;

预定时间内,每帧角度变化值;

预定时间内,每帧速度变化值。

优选地,每个序号之间的时间间隔可根据需要进行设定。

优选地,所述玩家登陆客户端,与服务器建立网络连接;

客户端通过选择进入游戏场景,向服务器端发送消息告知服务器端,客户端有新玩家进入游戏场景;

服务器端接收到客户端进入场景的通知后,给客户端一个应答消息,所述应答消息中包含当前服务器场景的时间戳;

客户端即以这个时间戳作为与服务器同步的一个时间,具体包括:

s201:玩家通过设备登录客户端;

s202:同时服务器已经加载路径配置,初始化时间为t0;

s203:与服务器建立连接;

s204:服务器返回当前时间t1;

s205:客户端收到服务器发来的时间t1,并保存到本地。

优选地,服务器端在创建游戏元素时,包括但不限于以下数据:

bt:服务器创建元素的时间戳;

et:服务器元素创建后,存在场景中的时间;

x:元素的创建时相对于场景坐标系的横坐标;

y:元素的创建时相对于场景坐标系的纵坐标;

rotate:元素的创建时相对于场景坐标系的角度值。

优选地,bt大于当前时间t1,用于表示在未来的一个时间bt将会创建该元素。

优选地,当时间t1递增到bt时,客户端和服务器端同时分别在坐标点(x,y),角度rotate位置处各自创建一条鱼,完成元素的创建同步。

优选地,元素创建完成后,客户端与服务器端根据同样的配置和帧率,计算每帧移动的距离。

优选地,在一段时间△t表示后,将客户端侧的时间差值记作△t1,服务器端侧的时间差值记作△t2;

比较客户端与服务器端的时间戳,当△t1与△t2的差值绝对值小于或等于预定阈值时,根据当前时间戳t2计算客户端场景数据;当△t1与△t2的差值绝对值大于预定阈值时,服务器端重新发送当前时间t2,客户端根据新接收的t2计算客户端场景数据。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明如后。

附图说明

图1示出了根据本发明的一个实施例的场景配置文件;

图2示出了根据本发明的一个实施例的基于时间戳的客户端与服务器端场景同步方法流程图;

图3示出了根据本发明的一个实施例的基于时间戳的客户端与服务器端场景同步方法流程图;

图4示出了根据本发明的一个实施例的基于时间戳的客户端与服务器端场景同步方法流程图。

具体实施方式

为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的基于时间戳的客户端与服务器端场景同步方法其具体实施方式、特征及其功效,详细说明如后。在下述说明中,不同的“一实施例”或“实施例”指的不一定是同一实施例。此外,一或多个实施例中的特定特征、结构、或特点可由任何合适形式组合。

本发明中使用的术语如下:

时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。通俗的讲,时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。它的提出主要是为用户提供一份电子证据,以证明用户的某些数据的产生时间。

帧率(framerate)是称为帧的位图图像连续出现在显示器上的频率(速率)。该术语同样适用于胶片和摄像机,计算机图形和动作捕捉系统。

根据本发明的一个具体实施方式,在进入场景时客户端与服务器端同步一个时间戳,场景中的元素状态更新都会依据一个时间戳字段,即在某个时间新建某个元素、在某个时间某个物体改变位置、在某个时间某个元素消失等。后续场景中物体的移动根据时间间隔,客户端和服务器端采用相同的算法保证相同间隔产生相同的运算结果保证一致性。减少了过程中的网络通讯。并且不会因为短暂的网络不好导致客户端无法同步的卡死现象。

根据本发明的一个具体实施方式,一种基于时间戳的客户端与服务器端场景同步的方法,其中:

玩家登陆客户端,与服务器建立网络连接;

客户端通过选择进入游戏场景,向服务器端发送消息告知服务器端,客户端有新玩家进入游戏场景;

服务器端接收到客户端进入场景的通知后,给客户端一个应答消息,所述应答消息中包含当前服务器场景的时间戳;

客户端即以这个时间戳作为与服务器同步的一个时间;

服务器端按照一定时间间隔t,通过配置或算法得出场景中元素新的状态;

客户端按照和服务器端相同的时间间隔t,通过相同的配置或算法得到场景中元素新的状态。

根据本发明的一个具体实施方式,以捕鱼游戏中鱼的游动路径同步进行示例性说明,其中客户端与服务器端同时都以每秒30次的频率,计算、刷新场景数据。根据本发明的一个优选实施方式,客户端与服务器端的刷新频率可根据需要进行设定。

客户端与服务器端都使用图1中的配置文件,[ai*]表示若干路径中的一种,图中示出路径为[ai11],其中,每一行数据表示一个位置信息;每个序号之间的时间间隔0.5秒;根据本发明的一个优选实施方式,每个序号之间的时间间隔可根据需要进行设定。

配置文件中的各列数据定义如下:

第一列:序号;

第二列:角度偏移度数及方向,正数为顺时针,负值逆时针;

第三列:速度的倍率,在基础速度下的倍率系数;

第四列:0.5秒内,每帧角度变化值;

第五列:0.5秒内,每帧速度变化值;

通过图1中的配置文件可以表示游戏场景中某一元素路径的动态变化。

如图2所示,根据本发明的一个具体实施方式,结合时间轴示出了初始化场景:

s201:玩家通过设备登录客户端;

s202:同时服务器已经加载路径配置,初始化时间为t0;

如图3所示,根据本发明的一个具体实施方式,结合时间轴示出了第一次同步时间戳的具体流程:

s203:与服务器建立连接;

s204:服务器返回当前时间t1;

s205:客户端收到服务器发来的时间t1,并保存到本地;

根据本发明的一个具体实施方式,以场景中的某一条鱼位置数据为例,服务器端在创建一条鱼的同时,包括但不限于以下数据:

bt:服务器创建鱼的时间戳;

et:服务器鱼创建后,存在场景中的时间;

x:鱼的创建时相对于场景坐标系的横坐标;

y:鱼的创建时相对于场景坐标系的纵坐标;

rotate:鱼的创建时相对于场景坐标系的角度值;

通常情况下,bt会大于当前时间t1,用于表示在未来的一个时间bt会创建一条鱼,鱼的位置信息在坐标点(x,y),角度rotate;这样当时间t1递增到bt时,客户端和服务器端同时分别各自创建一条鱼,完成鱼的创建同步。

当创建鱼完成后,客户端与服务器端根据同样的配置和帧率,计算每帧移动的距离。

由于客户端、服务器端处理器的计算能力不一样,尤其是客户端帧率跟设备硬件处理能力有较大关系;根据本发明的一个优选实施方式,在一段时间(用△t表示)后,客户端和服务器端分别累积计算的时间差值将存在一定误差,将客户端侧的时间差值记作△t1,服务器端侧的时间差值记作△t2。当△t1与△t2的差值累积到一定程度后,需要重新同步当前时间戳t2。如图4所示,比较客户端与服务器端的时间戳,当△t1与△t2的差值绝对值小于或等于预定阈值时,根据当前时间戳t2计算客户端场景数据;当△t1与△t2的差值绝对值大于预定阈值时,服务器端重新发送当前时间t2,客户端根据新接收的t2计算客户端场景数据。

本发明主要依据客户端和服务器端分别计算得到相同的场景数据。减少了网络间的通信,减少网络数据流量。也避免了网络通讯延迟可能产生的游戏界面卡顿,影响玩家游戏体验。

以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

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