一种基于数据同步的网游录像与回放的方法
技术领域
本发明涉及一种录像与回放的方法,尤其涉及一种基于数据同步的网游录像与回放的方法,属于计算机游戏领域。
背景技术
网络游戏录像,即是把玩家在场景中交互的过程和效果保存到持久化存储(比如磁盘)上。网络游戏的回放,即是把录像数据重新加载,重现玩家的交互过程和效果。
注意,这里提到的术语“场景”是指一张地图的一个运行实例。一个典型的场景包含了地理环境、场景对象、场景对象之间或场景对象与环境之间的交互。
网络游戏的录像和回放是玩家复盘和相互交流的重要手段。对于策略类游戏来说,回放游戏过程,反思游戏决策,是提升玩家游戏水平的重要方式。游戏开发者也希望玩家能通过回放游戏过程互相交流,激发他们对该游戏的兴趣和关注度。
网游录像与回放最直接的做法是用录屏软件录制游戏过程,并用视频播放软件回放。这种做法的最大缺点是占用的存储空间巨大。而对存储空间的优化通常是以牺牲图像质量为代价。虽然回放的速度可以控制,但是回放的内容在视频录制的时候就已经决定了,无法改变。
发明内容
为克服以上所述的缺陷,本发明提出一种基于数据同步的网游录像与回放的方法,截取并复制网游同步数据包,并用网游客户端软件读取录像数据,回放游戏过程与效果。
本发明的游戏录像与回放的方法适用于网络游戏和单机游戏,尤其适用于多人联网游戏。在一种典型的联网游戏中,玩家的操作在服务端执行产生的效果,会同步给场景中的其他玩家。其他玩家才能在场景中看到该玩家的存在,并与之交互。如果把这些同步数据存储下来,并重新在客户端模拟,就可以重现玩家的交互行为与效果。
本发明采用的技术方案提供一种基于数据同步的网游录像与回放的方法,所述方法包括如下步骤:
A、在网游服务端的游戏程序的运行过程中获取包含游戏同步的状态信息、事件信息和时间信息的同步数据包;
B、根据用户选择的游戏的目标对象,从同步数据包中将与所选的目标对象对应的状态信息、事件信息和时间信息的数据储存为录像数据文件;
C、通过游戏客户端程序读取录像数据文件,并且依照时间信息处理相应的状态信息和事件信息,生成游戏场景的状态和事件,从而能够有选择地回放游戏过程和游戏场景效果。
优选地,其中,同步数据包的同步方式包括:同步场景对象的所有状态信息的状态同步;在处理场景对象的事件所对应的状态信息保持一致的情况下对该事件信息进行的事件同步。
进一步,其中所述步骤A还包括:在数据包中记录游戏的全局状态信息,以便在游戏回放时能够从时间信息数据中定位任意时间点所对应的状态信息。
进一步,其中所述步骤B还包括:存储同步数据包的额外属性信息,其中,所述额外属性信息包括数据包发送时间戳和数据包同步目标属性,所述的数据包发送时间戳是指数据包发送时刻相对于预定的开始时刻的相对时间,所述的数据包同步目标属性是指满足预设的游戏属性约束的目标对象。优选地,所述的数据包发送时间戳采用游戏场景时间。
进一步,其中所述步骤B还包括:在生成数据文件时,添加状态信息和事件信息的分类信息。
进一步,其中所述步骤C还包括:在游戏场景回放时,动态伸缩由所述时间信息组成的时间轴,从而当状态和/或事件消息的执行速度快于所述时间轴的处理速度时实现回放快进,当状态和/或事件消息的执行速度慢于所述时间轴的处理速度时实现回放慢进。
进一步,其中所述步骤C还包括:在回放游戏时,当游戏角色离开预定的场景时,使角色恢复到在该场景中的初始状态。
进一步,其中所述步骤C还包括:回放结束后,删除回放场景和所有场景对象。
进一步,所述的基于数据同步的网游录像与回放的方法,还包括:将包含处理游戏同步的状态信息和事件信息等数据的逻辑独立封装为离线的库文件,以便在不启动客户端程序或不联机时播放录像文件。
本发明的有益效果为:录像数据占用的存储空间极小,客户端回放时模拟的图像质量没有损失;在生成的数据文件上添加分类信息还可以有选择地筛选内容供游戏客户端重放;录像数据可定制,且通过编辑录像数据,玩家可以修改回放的内容,操作非常灵活;回放速度可动态改变,用户可随意定位到感兴趣的位置,用户体验好。
附图说明
图1所示为根据本发明基于数据同步的网游录像与回放的方法的步骤。
具体实施方式
本发明的游戏录像与回放的方法适用于网络游戏和单机游戏。具体地,在一个典型的第一人称射击结构(CS结构)的多人联网游戏中,玩家的操作在服务端执行产生的效果,会同步给场景中的其他玩家。其他玩家才能在场景中看到该玩家的存在,并与之交互。如果把这些同步数据存储下来,并重新在客户端模拟,就可以重现玩家的交互行为与效果。
参照图1,根据本发明的一种基于数据同步的网游录像与回放的方法,包括如下步骤:A、在网游服务端的游戏程序的运行过程中获取包含游戏同步的状态信息、事件信息和时间信息的同步数据包;B、根据用户选择的游戏的目标对象,从同步数据包中将与所选的目标对象对应的状态信息、事件信息和时间信息的数据储存为录像数据文件;C、通过游戏客户端程序读取录像数据文件,并且依照时间信息处理相应的状态信息和事件信息,生成游戏场景的状态和事件,从而能够有选择地回放游戏过程和游戏场景效果。
在本实施例中,数据包内分为状态同步和事件同步两种同步方式。状态同步是指同步场景对象的所有状态信息。事件会引发状态的改变。如果状态一致,响应事件的机制一致,那么响应事件后的状态也一致。这是事件同步成立的基础。同步事件的好处是可以节省网络流量,但必须保证处理事件前所处状态的一致性。
在数据包中可以记录全局状态信息,以便在回放时快速定位到时间轴上的任意一点。实现定位有两种方式。一种是定期存储全局状态信息,在定位时往前找到最近的全局状态,然后往后执行到定位点。还有一种是从头开始,一直执行事件消息,直到执行到定位点为止。当然,如果定位点位于当前播放位置的未来时刻,可以直接从当前位置快进到定位点。
在本实施例的方法中,还可以存储同步数据包的额外属性。这些额外属性包括数据包发送时间戳和数据包同步目标属性。数据包发送时间戳是数据包发送时刻相对于游戏关卡开始时刻的相对时间。利用同步数据包进行回放时,根据回放开始的时间和该时间戳就可以确定数据包的处理时刻。同步数据包的目标属性,是指数据包仅同步给满足预设的游戏队伍/势力关系、可见性等属性约束的目标对象。游戏回放时,用户可以根据这些属性做出选择,或回放整个场景,或仅回放场景的一部分。比如,用户可以选择不看聊天信息,或选择仅观看多人游戏中某队伍的战斗回放等。
在场景回放时,可以动态伸缩时间轴。这主要是为了实现快进和慢进。状态和/或事件消息的执行速度快于录像时间轴的处理速度,则表现为快进;状态和/或事件消息的执行速度慢于录像时间轴的处理速度,则表现为慢进。通过动态伸缩场景回放时间轴,可以达到快进和慢进的效果。画面的时间轴也应该同步伸缩。当以非正常速度播放的时候,场景中的特效、动画等都应该改变播放速度。场景对象采用的游戏时间都应该以场景时间为基准。而前述的数据包发送时间戳也应该采用场景时间。
优选地,在回放游戏时,当游戏角色离开预定的场景时,使角色恢复到在该场景中的初始状态。具体地,在线状态下观战,当离开观战场景后,使角色恢复到观战前所处的状态。若角色在场景中,应同步原场景中的场景对象。作为一种优选的实现方案,当离开观战模式后,角色将在其所处游戏的场景中还原,及恢复初始位置或状态。
可选地,对于客户端镜头绑定主角的游戏,进入观战模式后,镜头应调整为自由模式,或随机绑定到一个角色身上。所述方法还包括,通过将客户端场景独立封装设计成一个库文件,以便于在未登陆服务器的时候(即离线状态),也能正常播放录像。
下面针对一个场景的一次录像录制和回放过程,描述根据本发明的另一个实施例,其实施步骤如下。
1)录制开始。用户选择开始录制后,首先需要保存一次场景的全局状态,并把关卡标记为录制状态。场景当前时间被记录下来。在录制状态下,场景中发生的事件及事件时间戳都会被记录下来。
这里所讲的事件一般包含了创建场景对象,场景对象移动,场景对象之间、场景对象与环境之间的交互等指令信息。这些信息一般以数据包的方式同步给客户端,是驱动场景对象交互的指令来源。通过重新执行这些指令,可以再现场景对象的交互过程与效果。
这里所讲的事件信息,还包括了按照用户需求记录额外的属性信息,包括场景对象所处的势力等,主要是为了回放时方便用户筛选感兴趣的信息。
除了记录事件信息外,还需要定期将场景的全局状态记录下来。这主要是因为事件必须执行在事件原本发生时的上下文中。而在回放时,为了快速定位,应该找到离当前位置最近的上下文全局状态,然后从定位点开始往后执行后续的事件。
2)录制结束。录制过程中记录的所有数据都被保存起来以被重播。另外应在记录文件中记录一些说明信息。优选的,可以记录:录制于哪个场景、录制时长等信息。
3)回放开始。用户从录制文件列表中选择一个自己感兴趣的,然后根据录制文件信息,创建一个与录制场景一样的场景。场景创建结束后就可以按照数据包的时间戳逐步处理数据包,再现原先场景中场景对象的交互过程与效果。
回放文件的数据既可以从存储服务器以数据流的方式逐步同步到回放客户端,也可以先下载到本地,从本地文件加载。从远端下载时,有可能因为下载速度过慢导致播放停顿,应该事先预下载一些到本地缓冲,以确保流畅播放。
播放过程中,用户可以根据需要筛选哪些数据可以执行,或哪些数据执行的效果可被显示出来。这都是因为数据包上记录了相关信息。用户也可以向前或向后定位到某个位置开始播放。这时只需要先把所有场景对象删除,然后把全局状态快照恢复,更新本地场景时间戳,再往后处理数据包即可。当然用户也可以选择暂停、慢速或快速播放,只需要把本地时间戳做伸缩变换即可。
播放过程中,用户可以选择自由镜头模式,或把镜头绑定到任一场景对象身上。
4)回放结束。回放结束后,删除回放场景和所有场景对象。
以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,都应属于本发明的保护范围。在本发明的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。