网易首页 > 网易号 > 正文 申请入驻

整整2.5年!DOOM在老硬件上终于崩溃了

0
分享至


整理 | 屠敏

出品 | CSDN(ID:CSDNnews)

如果说游戏史上有哪款作品最经得起时间考验,《DOOM》一定榜上有名。

这款 1993 年 12 月发布的 FPS 开山之作,不仅掀起了玩家对“第一人称射击”的狂热,还影响了此后几十年的游戏文化。自那时起近 32 年时间里,数不清的玩家投入了数百万、甚至数十亿小时沉浸其中,更别说社区也贡献了大量模组与自制关卡。可即便如此,它的底层代码里依旧埋着一些奇怪的遗留问题。

为了验证其中一个鲜有人注意的32 位整数溢出 Bug 是否真的会在现实中触发,一名极客决定做个实验:把《DOOM》在一款老旧的硬件上开着跑上几年,看看会发生什么。结果是——在两年半之后,游戏真的崩溃了。


极客实验:掌机 + UPS + “忘掉它”,让 DOOM 跑到崩溃

这名极客叫 Minki,谈及此次实验的初衷,其表示是源于他当时偶然间看到了一篇讲 DOOM 引擎的文章,发现有个用来记录 demo 播放的变量,每次都会一直往上加,甚至在下一个 demo 开始之后也还在加。程序里会把这个变量和另一个保存“前一个值”的变量做比较。问题在于,这个变量每次加一,迟早会接近溢出。虽然在正常情况下几乎不可能跑到那一步,但他就特别好奇:要是一直运行下去,多久会因为这个溢出而把游戏搞崩?

为了搞明白这个问题,他在自己的网站 LenOwO 上分享了这次“实验”过程——将移植版的 WinDOOM 装进一台 2003 年的华硕 MyPal A620 掌机里。这台掌机搭载 Windows Mobile 系统和 Intel XScale ARMv5 处理器,性能早已落伍。为了确保设备长时间不断电,Minki 还动手 DIY 改装了一块 18650 锂电池 UPS,并通过路由器的 USB 接口稳定供电,保证能一直有 5V 电压。

然后,这台掌机就被丢在角落里,绝大多数时间无人问津,直到两年半后,Minki 才发现屏幕上弹出了熟悉的“应用程序崩溃”提示。



崩溃幕后:gametic 的“死亡倒计时”

问题的根源其实埋在 DOOM 的代码里。和很多老牌商业软件一样,即便到了 1.9 最终版本,游戏依旧遗留了不少 bug。这里最关键的就是一个名叫gametic的计时器变量。

这个数值用于追踪游戏内的时间流逝,并且以35Hz(每秒 35 次)的固定频率递增,而不依赖游戏的渲染循环。即使不需要多复杂的数学知识,也能看出如果 gametic 永远不清零,时间一长它就会变成一个天文数字。

作为 DOOM 引擎的主要开发者,John Carmack 当年其实肯定知道这里的设计有点小问题。但他大概觉得没什么关系。为什么?因为这个数是存在有符号的 32 位整数里的。

这种整数能表示的范围大概是:从-2,147,483,647+2,147,483,647。所以只要你从 0 一直往上加,加到2,147,483,647这个天花板,下一次再加,就会溢出。

在 C 语言的标准里,“整数溢出”属于“未定义行为”。但在 x86 PC 这种常见的硬件上,几乎总是会出现一个很直观的结果:数值会绕一圈回到负数的最小值。也就是说,它会从最大正数跳到-2,147,483,647

换句话说,Carmack 知道这个变量理论上会溢出,但考虑到要数二十多亿次才会触发,在正常游戏流程里压根没人能跑到这一步,所以他就没当回事。


经过 2.5 年后,游戏崩了

正如上文所述,按照每秒 35 次计数来算,大约1.95 年就会让 gametic 数值溢出。当时 Minki 自己算过一遍,具体怎么算的已经记不清了,但他记得结果大概是——差不多能跑两年半才会溢出。

如今的实验证明,这款游戏真的经过了 2.5 年后崩了。所以,别把 DOOM 持续开着两年——或者说,任何游戏都别这么做,除非它是专用的服务器而不是客户端。


一场实验引发的思考

这场实验虽然看起来毫无实用意义,但却透露出几个耐人寻味的地方。首先,很多开发者在写代码时会假设用户不会让程序运行那么久,于是一些看似微不足道的边界条件就被忽略了。其次,C 语言中的未定义行为总是让人摸不透——有时表现一致,有时却完全不可预测。

随着 Minki 的帖子登上 Hacker News 热榜,也引发了不少讨论。许多人分享了类似经历:

  • 一位叫jbreckmckye的用户分享说,他在研究《古惑狼 3》的计时系统时发现,它同样有一个不断递增的 int32 计数器,只有在角色死亡时才会归零。如果一直运行下去,2.26 年后也会溢出。

  • jsheard则提到,《最终幻想 9》有一把隐藏武器,必须在游戏时间不到 12 小时的情况下赶到后期地图才能拿到。PAL 版本因为疏忽更狠,只给 10 小时。听上去几乎不可能,但还有另一条路:把游戏放着别管它,两年多之后计时器自己溢出归零,你就能拿到这武器了。慢慢来,照样能赢。

其实游戏中看似不可能触发的边界条件,不仅真的会发生,还能在不同游戏里演变成一种另类的“隐藏彩蛋”。

来源:https://lenowo.org/viewtopic.php?t=31

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
知名品牌突发:将关闭全部门店

知名品牌突发:将关闭全部门店

鲁中晨报
2025-11-03 07:11:03
女子怀疑医生在其子宫内装监听器,两次告上法庭:手机放歌就异常

女子怀疑医生在其子宫内装监听器,两次告上法庭:手机放歌就异常

诗词中国
2025-11-03 20:23:00
卫健局已立案!10岁孩子被切除6个器官事件的背后真相

卫健局已立案!10岁孩子被切除6个器官事件的背后真相

医客
2025-11-03 12:10:37
欧冠大战利物浦!皇马首发基本敲定:442出击 姆巴佩冲20球

欧冠大战利物浦!皇马首发基本敲定:442出击 姆巴佩冲20球

叶青足球世界
2025-11-03 20:54:35
从张家界赤裸裸搞钱的所长到怀化蛮横扣人的所长,都有湘西遗风

从张家界赤裸裸搞钱的所长到怀化蛮横扣人的所长,都有湘西遗风

细雨中的呼喊
2025-11-03 12:02:05
我错了,Gemini 做PPT不是“一般”,是“封神”。(尤其挖到第3层功能后…)

我错了,Gemini 做PPT不是“一般”,是“封神”。(尤其挖到第3层功能后…)

AI范儿
2025-11-03 19:12:19
争议!全红婵与王伟莹第2跳明显不在同一节奏 裁判打出8分同步分

争议!全红婵与王伟莹第2跳明显不在同一节奏 裁判打出8分同步分

风过乡
2025-11-03 08:22:39
退休警察举报11年前事故肇事司机存疑:78岁老人车祸重伤后离世,当年鉴定疑未勘验实车

退休警察举报11年前事故肇事司机存疑:78岁老人车祸重伤后离世,当年鉴定疑未勘验实车

红星新闻
2025-11-03 17:18:21
卫星在南海拍到振奋一幕,055大驱打头阵,当面横穿美航母战斗群

卫星在南海拍到振奋一幕,055大驱打头阵,当面横穿美航母战斗群

头条爆料007
2025-11-03 19:17:16
中共中央批准,开除王建军党籍

中共中央批准,开除王建军党籍

新京报
2025-11-03 11:16:46
我们应该有免于“被录音”的恐惧的自由

我们应该有免于“被录音”的恐惧的自由

非典型佛教徒
2025-11-02 23:05:11
震撼,上海交大要招5000个博士

震撼,上海交大要招5000个博士

阿亮评论
2025-11-03 15:50:54
苏丹爆发大屠杀!数万人被杀尸体堆积如山

苏丹爆发大屠杀!数万人被杀尸体堆积如山

亚太观澜
2025-11-02 21:27:06
郑丽文称台湾是“国家”,马英九落泪,洪秀柱亮明立场:谋求统一

郑丽文称台湾是“国家”,马英九落泪,洪秀柱亮明立场:谋求统一

乐天闲聊
2025-11-03 16:01:45
市值蒸发2800亿,退订率高达19%!小米汽车陷入信任危机?

市值蒸发2800亿,退订率高达19%!小米汽车陷入信任危机?

热点科技
2025-11-03 13:08:02
北京警方:司机孙某某(女,32岁)操作不当,1死4伤

北京警方:司机孙某某(女,32岁)操作不当,1死4伤

南方都市报
2025-11-03 13:07:20
11月首款新机官宣:11月10日,即将来袭

11月首款新机官宣:11月10日,即将来袭

科技堡垒
2025-11-03 11:05:22
面相又变了,50岁赵薇近照曝光,婚礼上用心打扮,却走不了回头路

面相又变了,50岁赵薇近照曝光,婚礼上用心打扮,却走不了回头路

银河史记
2025-11-03 14:33:02
疑似张智栋前同事发文:北大高材生,成为世界闻名大毒枭

疑似张智栋前同事发文:北大高材生,成为世界闻名大毒枭

吃瓜体
2025-11-03 11:15:35
四川:完全赞成、坚决拥护

四川:完全赞成、坚决拥护

新京报政事儿
2025-11-03 18:55:01
2025-11-04 01:32:49
CSDN incentive-icons
CSDN
成就一亿技术人
26069文章数 242175关注度
往期回顾 全部

游戏要闻

魔兽怀旧服:邮箱bug修复完毕,回收节日道具争议不断

头条要闻

郑丽文公开表态愿意访问大陆100次:要来解决2个问题

头条要闻

郑丽文公开表态愿意访问大陆100次:要来解决2个问题

体育要闻

开拓者官宣召回杨瀚森 队记解析核心原因

娱乐要闻

男导演曝丑闻 蒋欣的含金量还在上升

财经要闻

最新省市GDP:谁在飙升,谁掉队了?

科技要闻

余承东内部信:鸿蒙下一步要实现上亿覆盖

汽车要闻

环比增长28.7% 方程豹品牌10月销量31052辆

态度原创

艺术
数码
旅游
手机
亲子

艺术要闻

这21位欧美女神,惊艳得让人窒息!

数码要闻

苹果邀请英国iPad用户共创“圣诞树”,获奖作品将在伦敦总部点亮

旅游要闻

上海迪士尼官宣"更新"!再造第四座主题酒店

手机要闻

华为突然推送3.68GB大更新:Pura 80获推,你收到更新了吗?

亲子要闻

接受孩子的天性,让孩子自然发展,多看电子产品没什么问题

无障碍浏览 进入关怀版