游戏服务端虚拟时间实现方法技术

技术编号:9826169 阅读:155 留言:0更新日期:2014-04-01 15:34
本发明专利技术提出了一种游戏服务端虚拟时间实现方法,包括如下步骤:S1:服务器启动时缓存当前时间;S2:在程序运行过程中,服务器定期刷新缓存时间;S3:在程序运行过程中,游戏服务器获取时间时,统一通过获取缓存的当前时间。本发明专利技术的游戏服务端虚拟时间实现方法,对比于传统的时间处理方案,能更有效地保证时间的单调递增性,性能更高效;并能保证在服务器关闭维护后依然能保证时间的单调递增性;且能很容易的加速或者减速服务器的时间运行,方便特殊逻辑的调试,完善服务器对意外情况的处理能力。

【技术实现步骤摘要】
游戏服务端虚拟时间实现方法
本专利技术涉及游戏服务器处理技术,具体涉及游戏服务器时间处理的方法。
技术介绍
操作系统为了应对各种各样的时间需求,其时间精度很高。操作系统的时间可以被简单的设置,这样可能会导致游戏服务器的时间不是单调递增的,而引起依赖于时间的游戏逻辑错误。此外,对于游戏中的时间触发的逻辑,可能会因为服务器在某一个时刻很卡,导致某一时刻的系统时间被跳过,而无法进行时间触发。为保证时间的准确性,现有技术一般采用频繁读取系统时间的方式而保障时间精确度,然而游戏服务器对时间精度的需求都不高,一般100毫秒基本就够了,如果频繁的读取系统时间反而会因为不必要的时间精度浪费计算机性能。
技术实现思路
针对上述现有技术不足,本专利技术要解决的技术问题是提供一种满足游戏服务器时间需求,保证游戏服务器时间是单调递增的,避免游戏逻辑错误。为解决上述技术问题,本专利技术采用的技术方案为,游戏服务端虚拟时间实现方法,包括如下步骤:S1:服务器启动时,获取当前现实时间进行缓存,作为虚拟时间的时间值起点;S2:在程序运行过程中,服务器定期刷新缓存内的时间值,作为当前虚拟时间;S3:在程序运行过程中,服务器需要获得时间条件执行逻辑的,均通过缓存内的虚拟时间作为时间条件。这样的方案使服务器的时间不以操作系统为依据,而由游戏服务器本身的缓存时间进行获取,提高性能,并保证时间是单调递增的。进一步的技术方案为,所述步骤S2中,服务器每间隔一个游戏最小时间单位,刷新一次缓存内的时间值。这样的方案保证游戏的每一个时间都会作为时间条件而被执行逻辑,不会因为服务器卡而跳过某些时间,导致某些逻辑无法执行,而令运行出现逻辑错误。再进一步的技术方案为,所述步骤S2中,刷新缓存内时间值的具体步骤为:通过服务器的CPU时钟周期及服务器标准帧率,计算一个游戏最小时间单位内执行逻辑数量的理论标准值;当累计执行的逻辑数量达到理论标准值时,对缓存内的时间值增加一个游戏最小时间单位,并重新累计一次执行的逻辑数量。这样的方案使虚拟时间不依赖外接时间而增加。再进一步的技术方案为,所述步骤S2中,还包括把每次累计中执行一个理论标准值数量的逻辑的实际时间与游戏最小时间单位进行对比的步骤,当执行一个理论标准值数量的逻辑的实际时间大于游戏最小时间单位时,增大服务器的实际帧率,直到当执行一个理论标准值数量的逻辑的实际时间等于游戏最小时间单位时,把服务器的实际帧率重新调整为服务器标准帧率。这样的方案使服务器具有追赶时间的能力,但又不跳过每一个时间。进一步的技术方案为,还包括步骤S4:当收到关闭服务器命令时,服务器在关闭过程中,保存一次时间记录文件;所述步骤S1中,还包括在服务器启动时,读取时间记录文件,判断时间合法性的步骤;若合法,则执行步骤S1,正常启动后续步骤;若不合法,则停止执行后续步骤,退出进程。这样的方案使得服务器在关闭后重启时仍能保证时间的单调递增,避免因服务器启动时就存在时间错误而引发逻辑错误。再进一步的技术方案为,所述步骤S4中,保存时间记录文件,具体为在时间记录文件中,标记服务器状态为关闭,并记录关闭时的虚拟时间;所述步骤S1中,判断时间合法性的步骤具体为:当时间记录文件中的服务器状态为关闭时,若当前现实时间或虚拟时间大于关闭时的虚拟时间,则判断为时间合法;否则,判断为时间不合法。更进一步的技术方案为,还包括步骤S5:在程序运行过程中,每相隔一个指定时间,更新一次时间记录文件,把时间记录文件中的服务器状态标记为运行,并记录当时的虚拟时间;所述步骤S1,判断时间合法性的步骤还包括:当时间记录文件中的服务器状态为运行时,若当前现实时间或虚拟时间减去记录时的虚拟时间的差值大于指定时间,则判断为时间合法;否则,判断为时间不合法。这样的方案保证服务器在不正常关闭的情况下,启动时仍能保证时间的单调递增。优选的技术方案为,所述指定时间为3-6分钟。本专利技术的游戏服务端虚拟时间实现方法,对比于传统的时间处理方案,能更有效地保证时间的单调递增性,性能更高效;并能保证在服务器关闭维护后依然能保证时间的单调递增性;且能很容易的加速或者减速服务器的时间运行,方便特殊逻辑的调试,完善服务器对意外情况的处理能力。具体实施方式下面通过具体实施例对本专利技术作进一步的详细描述。本专利技术的游戏服务端虚拟时间实现方法,包括如下步骤:S1:服务器启动时,获取当前现实时间进行缓存,作为虚拟时间的时间值起点;并通过读取时间记录文件以判断时间合法性,当判断为时间合法时,运行进程,当判断为时间不合法时退出进程。S2:在程序运行过程中,服务器定期刷新缓存内的时间值,作为当前虚拟时间;具体地,服务器每间隔一个游戏最小时间单位,刷新一次缓存内的时间值。游戏最小时间单位由游戏本身的设计而定,例如某游戏以秒为单位作为判断游戏事件的触发条件之一,则该游戏的最小时间单位为1秒,若某游戏的游戏动作以0.1秒为单位作为动作画面的播放条件之一,则该游戏的最小时间单位为0.1秒;游戏的最小时间单位不是由本专利技术所决定,更不是由本专利技术的实施者人为规定,而是由采用本专利技术的技术方案所应用的游戏本身而定;当然,刷新的周期可以是比游戏最小时间单位要小,这样可使时间计算更精确,但对于游戏而言这样提高时间精度反而浪费了服务器的硬件性能。另一方面,刷新的周期不能比游戏最小时间单位要大,如果刷新周期比游戏最小时间单位大,则有可能导致虚拟时间跳过了某些时间点,导致逻辑无法正确触发。具体地,本实施例中,步骤S2的刷新缓存内时间值的具体步骤为:通过服务器的CPU时钟周期及服务器标准帧率,计算一个游戏最小时间单位内执行逻辑数量的理论标准值;以游戏最小时间单位为1秒为例,若根据服务器的CPU时钟周期和服务器标准帧率可以计算出理论上1秒能执行5个逻辑,即所述理论标准值为5;当累计执行的逻辑数量达到5个时,对缓存内的时间值增加1秒,并重新累计一次执行的逻辑数量。若执行的刷新周期不是游戏最小时间单位,则计算执行逻辑数量的理论标准值以刷新周期为依据,例如上文的例子,若刷新周期为0.1秒,则执行逻辑数量的理论标准值应为1个。根据CPU的时钟周期和服务器的帧率计算理论上1秒内执行多少个逻辑数量,是本领域技术人员的公知常识,在此不再赘述。CPU的时钟周期是由CPU的硬件决定的,服务器的帧率可以设置,所述标准帧率是指正常运行服务器时的预定帧率,而不是实际上服务器运行时的帧率。虚拟时间的增加不依赖于外界时间,这样的方式可以避免因服务器卡而跳过某些时间点,导致逻辑错误。然而,当服务器卡时,执行5个逻辑所需的实际时间会大于1秒(仍以上文中的例子为例),此时虚拟时间仍然增加1秒,虽然逻辑能正确触发不会被跳过,但会导致虚拟时间一直落后于实际时间。为解决此问题,步骤S2中还包括把每次累计中执行一个理论标准值(5个)数量的逻辑的实际时间与游戏最小时间单位(1秒)进行对比的步骤,当执行5个逻辑的实际时间大于1秒时,以3秒为例,缓存内的虚拟时间的时间值仍然只增加1秒,但增大服务器的实际帧率,使执行5个逻辑的标准时间缩短,例如0.7秒,即后几秒的时间内,每0.7秒实际时间虚拟时间就增加1秒,这样逐步使虚拟时间追赶实际时间,直到当执行一个理论标准值数量的逻辑的实际时间等于游戏最小时间单位本文档来自技高网...

【技术保护点】
游戏服务端虚拟时间实现方法,其特征在于:包括如下步骤:S1:服务器启动时,获取当前现实时间进行缓存,作为虚拟时间的时间值起点;S2:在程序运行过程中,服务器定期刷新缓存内的时间值,作为当前虚拟时间;S3:在程序运行过程中,服务器需要获得时间条件执行逻辑的,均通过缓存内的虚拟时间作为时间条件。

【技术特征摘要】
1.游戏服务端虚拟时间实现方法,其特征在于:包括如下步骤:S1:服务器启动时,获取当前现实时间进行缓存,作为虚拟时间的时间值起点;S2:在程序运行过程中,服务器定期刷新缓存内的时间值,作为当前虚拟时间;S3:在程序运行过程中,服务器需要获得时间条件执行逻辑的,均通过缓存内的虚拟时间作为时间条件;所述步骤S2中,服务器每间隔一个游戏最小时间单位,刷新一次缓存内的时间值;所述步骤S2中,刷新缓存内时间值的具体步骤为:通过服务器的CPU时钟周期及服务器标准帧率,计算一个游戏最小时间单位内执行逻辑数量的理论标准值;当累计执行的逻辑数量达到理论标准值时,对缓存内的时间值增加一个游戏最小时间单位,并重新累计一次执行的逻辑数量。2.根据权利要求1所述的游戏服务端虚拟时间实现方法,其特征在于:所述步骤S2中,还包括把每次累计中执行一个理论标准值数量的逻辑的实际时间与游戏最小时间单位进行对比的步骤,当执行一个理论标准值数量的逻辑的实际时间大于游戏最小时间单位时,增大服务器的实际帧率,直到当执行一个理论标准值数量的逻辑的实际时间等于游戏最小时间单位时,把服务器的实际帧率重新调整为服务器标准帧率。3.根据权利要求1所述的游戏服务端虚拟时间实现方法,其特征在于:还...

【专利技术属性】
技术研发人员:吴开
申请(专利权)人:广东天拓资讯科技有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1