1993年12月诞生的《毁灭战士》堪称FPS游戏开山之作,其影响力之深远,甚至让"毁灭战士克隆品"一度成为整个第一人称射击游戏类别的代称。这款经典游戏历经近32年依然活跃,依靠丰富的Mod内容和玩家自制关卡保持着旺盛生命力。不过最近有个令人啼笑皆非的发现:有位玩家意外证实,让游戏持续运行两年多后会出现崩溃现象。
科技论坛LenOwO的管理员明基分享了这个有趣的实验。他使用一台2003年产的华硕MyPal A620掌上电脑,在这个搭载Windows Mobile系统的古董设备上运行WinDOOM程序。为了让实验顺利进行,明基专门改造了供电系统:为设备安装了18650锂电池组UPS,通过路由器USB接口提供持续稳定的5V电源。这个长期运行的项目一度被他遗忘,直到日前屏幕上突然弹出的程序崩溃提示才让他想起这个实验。
这个看似偶然的崩溃其实早有伏笔。作为基于1997年《毁灭战士》源代码的移植版本,WinDOOM完美继承了原版游戏的诸多特性,包括那个鲜为人知的"演示文件"计时漏洞。游戏在待机演示模式下运行时,名为gametic的内部计时器会以35Hz频率持续累加,却从不会重置。这个32位有符号整型变量在设计之初就被约翰・卡马克刻意保留了这一特性——或许他认为没人会让游戏持续运行近两年。
经过计算可以得知:以每秒35次计,这个计时器将在约1.95年后达到最大值2147483647。在32位系统中,超过这个数值会导致整数溢出变为负值,进而引发程序崩溃。实际运行时间存在偏差的原因可能有两个:这台尘封多年的掌机确切的运行时间难以考证;另一个可能是移植版将计时频率降到了30Hz,这样溢出时间就会延长至2.26年,更接近明基声称的"两年半"。
无论如何,这个意外实验揭示了游戏史上一个冷知识:让《毁灭战士》不间断运行两年是个"危险"举动。那些想挑战极限的玩家们,或许该三思而后行了。
