CN103678919A - 游戏服务端虚拟时间实现方法 - Google Patents

游戏服务端虚拟时间实现方法 Download PDF

Info

Publication number
CN103678919A
CN103678919A CN201310695034.2A CN201310695034A CN103678919A CN 103678919 A CN103678919 A CN 103678919A CN 201310695034 A CN201310695034 A CN 201310695034A CN 103678919 A CN103678919 A CN 103678919A
Authority
CN
China
Prior art keywords
time
server
game
virtual
logic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201310695034.2A
Other languages
English (en)
Other versions
CN103678919B (zh
Inventor
吴开
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
GUANGDONG TEAMTOP INFORMATION TECHNOLOGY CO LTD
Original Assignee
GUANGDONG TEAMTOP INFORMATION TECHNOLOGY CO LTD
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by GUANGDONG TEAMTOP INFORMATION TECHNOLOGY CO LTD filed Critical GUANGDONG TEAMTOP INFORMATION TECHNOLOGY CO LTD
Priority to CN201310695034.2A priority Critical patent/CN103678919B/zh
Publication of CN103678919A publication Critical patent/CN103678919A/zh
Application granted granted Critical
Publication of CN103678919B publication Critical patent/CN103678919B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

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

Description

游戏服务端虚拟时间实现方法
技术领域
本发明涉及游戏服务器处理技术,具体涉及游戏服务器时间处理的方法。
背景技术
操作系统为了应对各种各样的时间需求,其时间精度很高。操作系统的时间可以被简单的设置,这样可能会导致游戏服务器的时间不是单调递增的,而引起依赖于时间的游戏逻辑错误。此外,对于游戏中的时间触发的逻辑,可能会因为服务器在某一个时刻很卡,导致某一时刻的系统时间被跳过,而无法进行时间触发。为保证时间的准确性,现有技术一般采用频繁读取系统时间的方式而保障时间精确度,然而游戏服务器对时间精度的需求都不高,一般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秒,这样逐步使虚拟时间追赶实际时间,直到当执行一个理论标准值数量的逻辑的实际时间等于游戏最小时间单位时,即虚拟时间追上实际时间时,把服务器的实际帧率重新调整为服务器标准帧率,重新正常运行。如果不是处于追赶状态时,执行5个逻辑的实际少于1秒时,虚拟时间不马上增加,而是等到够1秒时才增加。
S3:在程序运行过程中,服务器需要获得时间条件执行逻辑的,均通过缓存内的虚拟时间作为时间条件。服务器调用时间为条件判断时,不读取外部时间、不读取游戏终端机的操作系统时间,而时读取自身缓存的虚拟时间,既提高性能效率,又保证时间的正确性。
S5:在程序运行过程中,每相隔一个指定时间(本实施例为5分钟,优选地为3-6分钟),更新一次时间记录文件。
S4:当收到关闭服务器命令时,服务器在关闭过程中,保存一次时间记录文件。
具体地,保存时间记录文件包括记录服务器的状态及当时的虚拟时间,其中,在步骤S4中,把服务器状态标记为关闭并记录关闭时的虚拟时间;而在步骤S5中,把服务器状态标记为运行,并记录保存操作当时的虚拟时间。而在步骤S1中,判断服务器启动时时间合法性的步骤为,先判断时间记录文件中的服务器状态,若服务器状态为关闭,则表示上次服务器为正常关闭状态,比较服务器的当前时间与时间记录文件中所记录的时间,若服务器当前时间大于关闭时间,即可保证服务器开启时的时间是递增的,可判断为时间合法;当服务器状态为运行时,表明上一次服务器关闭时为非正常关闭,此时比较服务器的当前时间与时间记录文件中所记录的时间,若当前时间减去所记录的时间的差值大于指定时间,则判断为合法,否则判断为不合法。当差值大于指定时间时,表明服务器关闭的过程中跳过了一次保存操作,可保证服务器时间已是单调增的情况,指定时间优选为3-6分钟,这个时间可以保证服务器重新进入正常运行状态。服务器启动时的当前时间可以是服务器从外界(例如时间服务器、互联网等)获取的现实时间也可以是已经缓存了的虚拟时间,由于服务器的硬件处理速度很快,执行缓存虚拟时间起点及比较时间两项操作的耗时远小于一般游戏的游戏最小时间单位,对于本发明的技术方案而言,此两个操作可以理解为同时进行,而实际实施本发明时,其先后顺序不影响处理效果。保存时间记录文件的操作,是为了保证在服务器关闭维护后,仍能保持时间的单调递增性,而运行过程中保存时间记录文件则更进一步保证即使服务器不正常关闭,仍能保持时间的单调递增性。可取消保存时间记录文件的步骤,对应取消步骤S1中的时间合法性判断步骤,或者采用其他形式保障服务器关闭后重新启动的时间合法性。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.游戏服务端虚拟时间实现方法,其特征在于:包括如下步骤:
S1:服务器启动时,获取当前现实时间进行缓存,作为虚拟时间的时间值起点;
S2:在程序运行过程中,服务器定期刷新缓存内的时间值,作为当前虚拟时间;
S3:在程序运行过程中,服务器需要获得时间条件执行逻辑的,均通过缓存内的虚拟时间作为时间条件。
2.根据权利要求1所述的游戏服务端虚拟时间实现方法,其特征在于:所述步骤S2中,服务器每间隔一个游戏最小时间单位,刷新一次缓存内的时间值。
3.根据权利要求2所述的游戏服务端虚拟时间实现方法,其特征在于:所述步骤S2中,刷新缓存内时间值的具体步骤为:通过服务器的CPU时钟周期及服务器标准帧率,计算一个游戏最小时间单位内执行逻辑数量的理论标准值;当累计执行的逻辑数量达到理论标准值时,对缓存内的时间值增加一个游戏最小时间单位,并重新累计一次执行的逻辑数量。
4.根据权利要求3所述的游戏服务端虚拟时间实现方法,其特征在于:所述步骤S2中,还包括把每次累计中执行一个理论标准值数量的逻辑的实际时间与游戏最小时间单位进行对比的步骤,当执行一个理论标准值数量的逻辑的实际时间大于游戏最小时间单位时,增大服务器的实际帧率,直到当执行一个理论标准值数量的逻辑的实际时间等于游戏最小时间单位时,把服务器的实际帧率重新调整为服务器标准帧率。
5.根据权利要求1所述的游戏服务端虚拟时间实现方法,其特征在于:还包括步骤S4:当收到关闭服务器命令时,服务器在关闭过程中,保存一次时间记录文件;
所述步骤S1中,还包括在服务器启动时,读取时间记录文件,判断时间合法性的步骤;若合法,则执行步骤S1,正常启动后续步骤;若不合法,则停止执行后续步骤,退出进程。
6.根据权利要求5所述的游戏服务端虚拟时间实现方法,其特征在于:所述步骤S4中,保存时间记录文件,具体为在时间记录文件中,标记服务器状态为关闭,并记录关闭时的虚拟时间;
所述步骤S1中,判断时间合法性的步骤具体为:当时间记录文件中的服务器状态为关闭时,若当前现实时间或虚拟时间大于关闭时的虚拟时间,则判断为时间合法;否则,判断为时间不合法。
7.根据权利要求6所述的游戏服务端虚拟时间实现方法,其特征在于:还包括步骤S5:在程序运行过程中,每相隔一个指定时间,更新一次时间记录文件,把时间记录文件中的服务器状态标记为运行,并记录当时的虚拟时间;
所述步骤S1,判断时间合法性的步骤还包括:当时间记录文件中的服务器状态为运行时,若当前现实时间或虚拟时间减去记录时的虚拟时间的差值大于指定时间,则判断为时间合法;否则,判断为时间不合法。
8.根据权利要求7所述的游戏服务端虚拟时间实现方法,其特征在于:所述指定时间为3-6分钟。
CN201310695034.2A 2013-12-13 2013-12-13 游戏服务端虚拟时间实现方法 Active CN103678919B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310695034.2A CN103678919B (zh) 2013-12-13 2013-12-13 游戏服务端虚拟时间实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310695034.2A CN103678919B (zh) 2013-12-13 2013-12-13 游戏服务端虚拟时间实现方法

Publications (2)

Publication Number Publication Date
CN103678919A true CN103678919A (zh) 2014-03-26
CN103678919B CN103678919B (zh) 2017-01-04

Family

ID=50316449

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310695034.2A Active CN103678919B (zh) 2013-12-13 2013-12-13 游戏服务端虚拟时间实现方法

Country Status (1)

Country Link
CN (1) CN103678919B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110879730A (zh) * 2019-11-14 2020-03-13 腾讯科技(深圳)有限公司 自动调整游戏配置的方法、装置、电子设备及存储介质
CN112988022A (zh) * 2021-04-22 2021-06-18 北京航天驭星科技有限公司 虚拟日历显示方法、装置、电子设备及计算机可读介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101231732A (zh) * 2003-03-26 2008-07-30 阿浦福润特技术有限公司 产生收入用的游戏服务器系统和方法
CN101626391A (zh) * 2008-07-08 2010-01-13 盛大计算机(上海)有限公司 网络游戏客户端资源处理方法
CN101887484A (zh) * 2009-05-14 2010-11-17 灰熊(北京)科技有限公司 一种有效防止棋牌游戏锁牌器的方法
CN102769616A (zh) * 2012-07-04 2012-11-07 珠海金山网络游戏科技有限公司 一种基于游戏移动逻辑客户端与服务端同步的延迟计算方法
CN103095655A (zh) * 2011-11-02 2013-05-08 中国移动通信集团公司 云游戏的实现方法、系统和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101231732A (zh) * 2003-03-26 2008-07-30 阿浦福润特技术有限公司 产生收入用的游戏服务器系统和方法
CN101626391A (zh) * 2008-07-08 2010-01-13 盛大计算机(上海)有限公司 网络游戏客户端资源处理方法
CN101887484A (zh) * 2009-05-14 2010-11-17 灰熊(北京)科技有限公司 一种有效防止棋牌游戏锁牌器的方法
CN103095655A (zh) * 2011-11-02 2013-05-08 中国移动通信集团公司 云游戏的实现方法、系统和装置
CN102769616A (zh) * 2012-07-04 2012-11-07 珠海金山网络游戏科技有限公司 一种基于游戏移动逻辑客户端与服务端同步的延迟计算方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110879730A (zh) * 2019-11-14 2020-03-13 腾讯科技(深圳)有限公司 自动调整游戏配置的方法、装置、电子设备及存储介质
CN110879730B (zh) * 2019-11-14 2023-10-24 腾讯科技(深圳)有限公司 自动调整游戏配置的方法、装置、电子设备及存储介质
CN112988022A (zh) * 2021-04-22 2021-06-18 北京航天驭星科技有限公司 虚拟日历显示方法、装置、电子设备及计算机可读介质

Also Published As

Publication number Publication date
CN103678919B (zh) 2017-01-04

Similar Documents

Publication Publication Date Title
CN103268277B (zh) 一种输出日志信息的方法及系统
US8689214B2 (en) Replication of machine instances in a computing environment
TWI501102B (zh) 虛擬時間控制裝置、方法及電腦程式產品
US7991986B2 (en) Microprocessor starting to execute a computer program at a predetermined interval
US20060059486A1 (en) Call stack capture in an interrupt driven architecture
RU2008138698A (ru) Модель абстрактного исполнения для мета-рабочего цикла, основанного на продолжении
US20140365833A1 (en) Capturing trace information using annotated trace output
US20120036501A1 (en) Method and System for Capturing System and User Events Using Hardware Trace Devices
CN117112134A (zh) 虚拟机运行跟踪
CN107168857B (zh) 一种统计应用程序中的函数调用的方法及组件
TW201405303A (zh) 底板管理控制器監控系統及方法
CN103678919A (zh) 游戏服务端虚拟时间实现方法
US20090089555A1 (en) Methods and apparatus for executing or converting real-time instructions
JP2022550462A (ja) 書き込み回数制限による不揮発性メモリの長寿命化
TW201433979A (zh) 在提前執行中資料的選擇性污染
WO2016095091A1 (en) Instrumentation of graphics instructions
US20110107072A1 (en) Method for self-diagnosing system management interrupt handler
CN101320416A (zh) 一种检测软件处于调试状态的方法和系统
CN101814054B (zh) 一种用于调试微控制器的指令追踪控制器
WO2020061765A1 (zh) 一种处理器性能的监测方法及装置
CN106095631B (zh) 一种基于有限状态机实现的多周期非流水线cpu动态调试方法
CN114003498A (zh) 软件异常检测方法、装置和电子设备
US20140298074A1 (en) Method of calculating cpu utilization
CN106326049B (zh) 一种故障定位方法及终端
US20140033206A1 (en) Monitoring thread starvation

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent of invention or patent application
CB02 Change of applicant information

Address after: 510000 Guangzhou, Guangdong, Tianhe District Software Park, Gaotang New District, Internet Industrial Park, building 1, A301, B301, C301 room

Applicant after: Guangdong star day extension Interactive Entertainment Limited

Address before: 510000, A401, B401, building 1, Guangzhou Internet industry park, Gaotang New District, Tianhe District Software Park, Guangzhou, Guangdong

Applicant before: Guangdong Teamtop Information Technology Co.,Ltd.

COR Change of bibliographic data

Free format text: CORRECT: APPLICANT; FROM: GUANGDONG TEAMTOP INFORMATION TECHNOLOGY CO., LTD. TO: GUANGDONG XINGHUI TEAMTOP INTERACTIVE ENTERTAINMENT CO., LTD.

C14 Grant of patent or utility model
GR01 Patent grant