要说游戏史上最经得起时间检验的作品的话,非《DOOM》莫属,绝对是榜单里的常客。
这款1993年推出的第一人称射击游戏,可谓开创了一个新时代,玩家第一次体验到“枪在手,天下我有”的畅快感,除此之外,对整个游戏行业的文化氛围和技术进步都起到了挺大的推动作用。
就算现在差不多过去了32年,还是有不少玩家和开发者用各种办法重新感受它的魅力,比如搞mod、改代码,甚至让它跑在冰箱、打印机,甚至计算器上。
即使是再经典的游戏,也难免会遇到一些“老问题”或“历史包袱”。
最近,有个极客搞了个“变态”实验,验证了《DOOM》代码里藏着的一个隐秘Bug。
他就这样让游戏持续运行了整整两年半,直到它自己崩溃为止。
今天咱们就谈谈这个实验的来龙去脉,为什么会发生这些事,还有它给我们带来了哪些启示。
两年半过去了,终于崩了,DOOM竟然藏了个没人愿意理会的Bug。
这位极客叫Minki,偶尔在网上看到一篇关于《DOOM》引擎技术的分析文章,里面提到一个很少被人发现的Bug。
这个叫gametic的变量,是用来记录游戏内时间的,它每秒会以固定的节奏,也就是每秒35次,递增,用来追踪游戏时间过去了多久。
按理说,这个gametic变量在平常游戏里基本没啥问题,可因为它用的是个32位带符号整数,理论上如果一直不停地累加下去,肯定会遇到“整数溢出”的情况。
“整数溢出”就是说,当一个数字超出了它能表示的最大或最小范围,比如32位有符号整数的值域是从-2,147,483,648到+2,147,483,647,如果再加一,就会“绕回”到最小值变成-2,147,483,648,或者如果减到更小,就会回到最大值。
虽然这个情况听起来挺吓人的,但在1993年搞《DOOM》时,John Carmack(这游戏的核心程序员)估计也不怎么在意。
毕竟,谁会真正让游戏运行二十多亿次呢?按常理来看,这根本不可能出现。
不过,极客们的好奇心,可谓没完没了,只停不下来。
Minki一琢磨,这个Bug看上去几乎不可能被触发,不过要是把游戏一直开着呢?为验证这个大胆的点子,他打算搞个实验:找台老旧设备,把《DOOM》闹崩为止。
经典游戏那份魅力,真是让人难以割舍,回味无穷。不过也得承认,有时候它们也会让人觉得有点可惜,毕竟科技发展太快,有些设计和体验就算当时再牛,也跟不上如今的水准。可是,那份难忘的记忆,总能让人心生温暖。
《DOOM》这款经典游戏,能在几十年后依然受到玩家和开发者的喜爱,可不光是因为玩法好玩儿,更重要的是它在技术和文化方面留下了深远的影响。
其实,经典之所以能称得上经典,并不是因为它没有缺陷,而是就算带点瑕疵,依然能够被玩出各种花样来。
所以,Minki的这次尝试也算是一种特别的表示尊敬吧,用这种方式让我们再次回头看看那个年代的技术限制和游戏的吸引力。
对于一般的玩家来说,试验的结果挺直白的:别把游戏开两年都不退出,要不真的可能会崩溃。
#热问计划#