网游中,“时间停止的实现”的设想- 万仓一黍- 博客园

  昨日,看了一篇文章“”。

  文章里讨论了游戏暂停,但是游戏里的时间没有暂停的问题。导致在游戏重开的时候,原本应该收获的“菜”已经腐烂一片了。这个原因的产生,实际上是由于游戏并没有实际上的暂停(服务器可不是说关就关的),只是把链接到服务器的请求转向到一个其他页面而已,所有的游戏数据仍然继续运转,导致恢复链接的时候,游戏数据已经运行了一整天,自然该腐烂的就腐烂了。

  我很同意文章的观点,每个活动都设置了EndTime,在运行的时候读取系统时间和EndTime比较,来决定反馈给玩家的结果。由于游戏运行的时候,不能擅自更改服务器的时间(这会导致很多不可预期的错误),也不合适修改每一个活动的EndTime(量太大,架构太复杂,修改容易出错)。

  换个思路。由于每项活动都要读取系统时间来和EndTime比较,那如果游戏系统自身维护一个SysTime如何。在游戏的时候,读取SysTime,来和EndTime进行比较,来决定反馈给玩家的结果。而如果接到类似的暂停游戏的通知,则暂停SysTime的增加,并将游戏的链接转到“致歉页面”,一旦恢复游戏的运行,则继续维护SysTime的增加。这样,在暂停的前一刻和暂停的后一刻就无缝的连接起来了,就不会产生“菜已经腐烂的遗憾了”。

  而游戏自身维护SysTime也是可行的,将SysTime封装成一个类,定期增加一个值(比如1秒、1分钟)。而用SysTime表示当前距某个时间的秒数(比如说游戏开始运行是2010年1月1日),这个在实际中也是可行的,很多的编程语言里的时间对象就表示为距1900年1月1日的描述。

  以上是我对“时间停止的设想”,欢迎各位网友交流。


郑重声明:资讯 【网游中,“时间停止的实现”的设想- 万仓一黍- 博客园】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——