游戏机制拆解:暂停状态下的两套计时 · 场景07
暂停菜单打开时,现实时间仍然流逝,但关卡内的模拟时间未必继续。把两条时间轴分开,可以解释为什么同一段等待对不同计时器产生不同影响。
这一篇用一组公开的自定义数据拆开计算过程。可以先遮住结果,依照约定逐项填写自己的记录,再用文末的复核办法检查。案例关注的是规则边界和状态变化,并不替任何具体作品规定玩法。
本次规则与数据
本练习明确规定暂停只冻结游戏时间,不冻结现实时间。每条记录先设置暂停状态,再经过给定时长;计时从零开始,不考虑加载、后台限速或网络校时。
每段都累加现实秒数,只给运行段累加游戏秒数。
每条记录表示“是否暂停、经过秒数” [[False, 7], [True, 6], [False, 6], [True, 5], [True, 5], [True, 5], [True, 1], [False, 8], [False, 2], [True, 4]]
按顺序处理
状态为运行,经过7秒;现实累计7秒,游戏累计7秒,两者相差0秒。
状态为暂停,经过6秒;现实累计13秒,游戏累计7秒,两者相差6秒。
状态为运行,经过6秒;现实累计19秒,游戏累计13秒,两者相差6秒。
状态为暂停,经过5秒;现实累计24秒,游戏累计13秒,两者相差11秒。
状态为暂停,经过5秒;现实累计29秒,游戏累计13秒,两者相差16秒。
状态为暂停,经过5秒;现实累计34秒,游戏累计13秒,两者相差21秒。
状态为暂停,经过1秒;现实累计35秒,游戏累计13秒,两者相差22秒。
状态为运行,经过8秒;现实累计43秒,游戏累计21秒,两者相差22秒。
状态为运行,经过2秒;现实累计45秒,游戏累计23秒,两者相差22秒。
状态为暂停,经过4秒;现实累计49秒,游戏累计23秒,两者相差26秒。
最后现实时间49秒,游戏时间23秒,暂停累计26秒。
核对与应用
逐段把非暂停时长加在一起,应等于游戏时间;把全部时长相加,得到现实时间。两者的差恰好是累计暂停时长,而且游戏时间永远不能超过现实时间。
若要让关卡倒计时随暂停停下,应读取游戏时间;若活动期限需要持续流逝,则应明确使用另一时间来源。这里的算例只帮助区分需求,不替具体游戏规定哪一种一定正确。
若实际观察与这个模型不同,先确认操作顺序、编号起点和边界是否包含,再检查是否漏记了前一步状态。每次只改变一个条件并保留原记录,通常比反复重做整段操作更容易找到差异。明确条件后,才适合把同一种方法应用到新的场景。
