“Can it run Doom”模因有着数十年的历史,是互联网上最古老、最受欢迎的笑话之一。但它的发展远不止于此。对于有抱负的开发人员来说,这是一个成人仪式。
漫步浏览最近成为我最喜欢的 Reddit 子版块r/itrunsdoom ,您会看到火炬被勇敢地延续到今天。自从它运行厄运!大约一年前, Tumblr 页面停止发布更新,Reddit 社区已发展到超过 100,000 名成员,他们发布帖子并对Doom被移植到几乎任何内容做出反应。计算器、信用卡终端——当然可以。还有Nintendo Alarmo 、 2006 年推出的 RS Media 机器人以及Pioneer DJ 多人播放器。这只是过去几个月的情况。
我越深入奇怪的《毁灭战士》端口,我就越开始想知道这个想法的起源——更重要的是,为什么它是可能的。这到底是谁的荒唐想法?为了了解这个故事,我需要深入挖掘 20 世纪 90 年代互联网历史的地狱般的年鉴,并与一些使这一传统得以延续至今的狂野黑客交谈。
为什么是《毁灭战士》?
我们的故事并不是从 1993 年《毁灭战士》发布时开始的。故事要从四年后的 1997 年说起。当年 12 月 23 日,圣诞节前两天,id Software 发布了《Doom》的源代码。主创 John Carmack 亲自编写了原始代码,他给社区写了一封信,该信至今仍保留在《Doom》的 GitHub 页面上。是的,即使在今天,即使像 Zenimax 这样的大公司吞并了 id Software(Zenimax 随后被微软吞并了), Doom源代码仍然存在。
卡马克在信中写道:“我不太清楚有多少人会玩这个,但如果开展重大项目,看到一定程度的社区合作将会很酷。” “我知道大多数早期项目都是孤立完成的粗略黑客攻击,但我很高兴看到明年在多个平台上协调一致地发布改进的、向后兼容的Doom版本。”卡马克甚至为读者提供了一些潜在的项目想法。
社区立即开始移植Doom 。我的意思是字面意思。 Doom的第一个源端口 DOSDoom 在源代码发布的同一天发布。今天您仍然可以下载它。 id Software 发布的原始源代码仅适用于 Linux 版本的Doom。由于受版权保护的声音库,DOS 代码不可用——“哇,这是一个错误吗?”卡马克在信中写道。 “我现在编写自己的声音代码。”
从那里开始,就有了一个极其密集和复杂的《末日》源端口谱系,已经延续了几十年。就在去年,另一个名为 PrBoomX 的源端口的分支出现了。坦率地说,该家谱超出了本文的范围。仅涵盖它就需要一篇比这篇文章大几个数量级的文章。我想了解一些奇怪的事情。
值得庆幸的是,没过多久事情就变得奇怪了。我能找到的最早的Doom奇怪版本是 Texas Instruments TI-82 图形计算器,它于 1998 年 4 月 12 日上传到 ticalc.org 。它是用 Basic 编写的,因此与其说是移植,不如说是劣质克隆。但即使在 26 年前,人们仍然有兴趣让《Doom》在原本不适合的平台上运行。
在接下来的十年左右的时间里,互联网上已经没有多少东西可以展示《毁灭战士》在这些奇怪的平台上运行了——我的意思是,YouTube 直到 2005 年才上线。可能有很多“孤立地进行的粗暴黑客攻击,然而,正如卡马克所预测的那样。 1998 年,发布了多款搭载 DigitaOS 操作系统的相机,正如 YouTube 频道 LGR 几年前展示的那样,您可以在这些相机上运行Doom 。牢记 DigitaOS。我们将在下一节中回到它。
1998 年是否有人真正在其中一台摄像机上运行《毁灭战士》 ?不是我能找到的,但我的猜测是,这是一个随着时间的流逝而消失的答案——或者至少是在互联网上。但从源代码发布的早期以及随后移植到不同平台的情况来看,很明显至少进行了一些实验。我能找到的关于Doom正确移植的最早参考文献之一是2007 年的 Doomworld 论坛帖子,其中作者链接到 YouTube 上的在 TI-83 计算器上运行的游戏视频(现已删除)。
2013 年 10 月,《It Run Doom!》 Tumblr 页面上线,在展示了游戏的一些基本端口后,作者分享了一段在钢琴上演奏《毁灭战士》的视频。
然而,在搜索了 Tumblr、Reddit、YouTube 和普通的 Google 后,有一个视频不断出现。这是LGR 在 TI-83 上播放的Doom视频。该视频于 2017 年发布,观看次数已超过 700 万次,是迄今为止我在研究中发现的在非传统设备上运行《毁灭战士》最受欢迎的来源。 《毁灭战士》可以在任何东西上运行的想法可以追溯到游戏首次发布时,并且这个想法在之后的几年里一直受到爱好者的关注。然而,现代人对在许多奇怪的设备上运行《毁灭战士》的痴迷似乎至少部分源于 LGR 关于该主题的视频。
《毁灭战士》具有标志性,这无疑是人们痴迷于移植它的原因。但游戏本身也存在多种因素,使其成为此类狂热黑客项目的理想选择。
高度便携的恶魔杀手
在深入了解《毁灭战士》如此便携的一些技术细节之前,如果《毁灭战士》不是经过认证的文化试金石,那么这一切都不会发生。说《毁灭战士》非常受欢迎是轻描淡写的。 Valve 的创始人加布·纽厄尔(Gabe Newell)—— 《Doom》发布时正在微软工作——估计1993 年安装《Doom》的电脑数量比 Windows 还多。即使这有些夸张,但不可否认《毁灭战士》确实引起了轰动。
1994 年, 《毁灭战士》上映几个月后,环球影业购买了电影制作权。 Newell 提出免费将Doom移植到 Windows 上。英特尔禁止在工作计算机上安装Doom 。 id Software 在发布这款游戏的新闻稿中写道,“我们完全预计《毁灭战士》将成为全球企业生产力下降的首要原因。”
“许多人开始惊叹 id 可能会让像微软或 IBM 这样的公司显得过时。我把共享软件现象变成了一种上瘾的良方,”大卫·库什纳在《末日大师》中写道。 “ 《毁灭战士》是如此引人注目,以至于人们不得不服下全部剂量。有些人将其称为“海洛因软件”。 《福布斯》杂志发表了一篇题为《来自地下的利润》的文章,内容滔滔不绝,讲述了 id 实际上是如何让微软这样的公司变得过时的。 “私人持有的 id Software 不公布财务数据,”它写道,“但从我能掌握的该公司的利润率来看,它让微软看起来像一家二流水泥公司。”
受欢迎程度可能是引发野火的原因,但为了让《毁灭战士》能够在如此多的不同平台上运行,它需要三个关键要素。首先,源代码需要免费提供。查看。卡马克选择亲自完成这一步。毕竟,您可以在大多数现代电子设备上运行最初的《超级马里奥兄弟》 ,但祝您找到源代码好运。
但这里有两点需要更多解释。源端口需要适用于您想要的几乎任何平台,最后,游戏需要编写为以极低的软件和硬件要求运行,即使按照 20 世纪 90 年代末的标准也是如此。
还有一些其他游戏也包含其中一些元素。但《毁灭战士》加上其惊天动地的受欢迎程度,击中了这三者。正如开发者 Sick.Codes向我解释的那样, 《毁灭战士》成为“地球上移植最多的游戏之一,有时甚至有人为最随机的架构编译了它。”
让我演示一下。
这是Doom版本的链接 您可以在浏览器中播放。没什么特别的,对吧?在浏览器中玩《毁灭战士》的方法有很多种,但如果您查看地址栏,您会发现一些有趣的东西。您可以玩的Doom版本是 SVG 文件。这是一个矢量文件——您可以在 Photoshop 中加载该文件。它们应该是静态图像,当然也是你无法与之交互的图像。但这里是在 SVG 中运行的《Doom》 ,您可以在浏览器中播放它。
另一个重要的事实是,在 1993 年,PC 并不是玩游戏的理想平台,当时 3D 图形加速器价格昂贵且难以获得,并且大多数这些芯片都用于街机和家用游戏机。如果 id Software 要开发一款游戏,特别是如果该公司要将其作为共享软件分发,就像之前与Commander Keen和Wolfenstein所做的那样,那么它需要在几乎任何东西上运行。
Gzalo是阿根廷志愿者组织 Cybercirujas 的成员,该组织将电脑零件作为捐赠并进行翻新。开发人员能够在垃圾箱中发现的 Verifone VX620 支付终端上运行Doom 。
“[Doom] 只需要一个帧缓冲区(映射到屏幕的内存区域)来输出图像,以及一些非常基本的输入。在软件方面,您只需要能够为目标架构编译 C 语言,这几乎总是为 32 位处理器编写程序的首要条件之一,”开发人员 Gzalo 告诉我。 “为了移植其他较新的游戏,你通常需要有一个操作系统(通常是 Linux/Posix)和某种支持 OpenGL 的方法,这是可行的,但需要更多的工作。”
Gzalo 继续解释了《Doom》运行所需的软件有多么少。
“终端的软件没有被修改。我发现巴西的某个人十年前就使用过这个终端,并且仍然拥有开发证书和签署应用程序的方法,因此它正在运行有效的签名代码,”开发人员告诉我。
最低的软件要求很重要,但硬件方面也同样重要。毫不奇怪,《毁灭战士》不需要太多硬件即可运行。 游戏最初的系统要求是运行频率至少为 25MHz 的 386 CPU 和 4MB RAM。在某些情况下,80386 是英特尔有史以来发布的第一款 x86 32 位处理器,它于 1986 年开始出现在 PC 中——比《毁灭战士》发布七年。让《Doom》在几乎任何东西上运行都是有意为之的。
卡马克本人表示,曾经甚至有一个版本可以在没有显示器的情况下运行,并且只需保存屏幕截图。
八九不离十。该代码非常可移植——我曾经有一个版本,甚至可以无头运行并且只保存屏幕截图。
—约翰·卡马克 (@ID_AA_Carmack) 2022 年 3 月 3 日
Doom的基本软件和硬件要求让我们回到了 DigitaOS。该操作系统是用C语言编写的,它允许为该平台开发和发布第三方应用程序。首批搭载 DigitaOS 的两款相机 — 柯达 DC220 和 DC260 — 均配备 PowerPC 800 处理器。据我估计,他们使用了 MPC860,频率可达 80MHz。 LGR表示DC260内部的芯片至少达到了66MHz。
就这样,运行Doom的要求就已经满足了。我们拥有比 386 性能更强、运行频率为 25MHz 的 CPU、少量内存以及能够编译用 C 语言编写的代码的平台。为了避免时间线被搞砸,这在 1998 年就已经成为可能。后来没有发生什么突然让Doom在柯达 DC260 上运行。构建模块从一开始就已经存在。
然而,这并不仅仅因为《毁灭战士》是一个完美的程序。它非常灵活,并且高度可移植到现代设备,但这个故事的一个重要部分归结于这样一个事实:源代码可供任何人免费编辑。在过去的近三十年里,几乎所有可以想象到的平台都出现了《毁灭战士》的源端口。如果您无法使用原始源代码让Doom在某些东西上运行,那么您几乎肯定可以使用众多源端口之一来运行它。
我知道您一直在等待 – 让我们来谈谈 SVG。 Doom可以在矢量文件内运行,因为 SVG 支持 JavaScript。正如Doom SVG 的开发者所说,矢量文件只是运行 js-dos(一个基于 JavaScript 的开源 DOS 模拟器),然后使用Doom 的各种 DOS 源端口之一。尽管这看起来像是某种形式的编程魔法,但开发人员将其称为“几个小时的有趣使用”。这说明了一切。
《毁灭战士》如何成为最低限度可行的黑客
2022 年,Sick.Codes 展示了在约翰迪尔拖拉机显示器上运行的Doom 。它在 Def Con 2022 上进行了展示,这是自 1993 年以来在拉斯维加斯举行的年度网络安全和黑客会议 – 具有讽刺意味的是, 《毁灭战士》也在同一年发布。除了让《毁灭战士》运行之外,该港口还配备了拖拉机而不是枪支,让你可以真正地消灭恶魔。这是一个有趣的小端口,但 Sick.Codes 表示花了几个月的时间才开始工作。为什么要这么努力?
如果您熟悉修复运动的权利,您可能已经将这里的点联系起来了。由迪尔公司创建的约翰迪尔设备一直处于维修运动权利的中心,但并不积极。由于其软件被锁定,该公司与农民进行了长达数年的法律斗争。如果没有迪尔的直接参与,这些设备几乎不可能修复。让Doom在约翰迪尔拖拉机显示器上运行不仅仅是一个有趣的技巧。这是一个概念证明。
“在约翰迪尔旗舰农业机械显示器上运行《毁灭战士》 ,他们花费了数年时间开发了数千个小时,这表明我已经能够完全彻底地破解该设备,”Sick.Codes 告诉我。 “如果我可以在他们的旗舰设备上运行Doom ,我就可以对该设备进行任何其他未经授权的修改。我可以把它变砖。我可以增强它。我可以安装第三方软件。我可以删除功能,或者我可以安装应该花钱的功能。”
在约翰迪尔拖拉机显示器上玩《毁灭战士》(越狱/root) @defcon pic.twitter.com/ih0QUTGNuS
— Sick.Codes (@sickcodes) 2022 年 8 月 14 日
在这种情况下, 《毁灭战士》证明了更深入、更重要的工作。在两年前的《连线》报道中,开发人员表示,由于实现了 root 访问权限,他们能够访问存储在机器中的 1.5GB 日志。这些日志仅适用于经过认证的约翰迪尔维修技术人员。有了它们,农民或第三方专家就可以诊断并可能修复约翰迪尔设备,即使没有迪尔公司的直接参与。
“ Doom需要少量的库才能运行,即用于图形的 SDL2,因此能够在不应该运行Doom 的设备上运行游戏,就证明您可以在您正在使用的设备上运行任意软件, ” Sick.Codes 告诉我。
看到《毁灭战士》在拖拉机显示器上运行很有趣,我当然不想从中吸取乐趣。但重要的是要强调这里更广泛的背景。您可以尝试在此类设备上安装其他软件,但Doom是展示此类黑客攻击的理想选择。它是可视化的、交互式的,并且是一个为特定目的而构建的程序。它还引起了很多关注——您认为我们会看到有关在约翰迪尔拖拉机显示器上运行的某些命令行界面的新闻报道吗?可能不会。
尽管我不想淡化这方面的工作量——请记住,这个漏洞利用需要几个月的时间才能解决——但Doom也是一个相对简单的程序。 Sick.Codes 告诉我,他们使用 Chocolate Doom 进行演示,这是一个源端口,旨在在尽可能多的不同硬件和软件配置上运行。我的意思是,Chocolate Doom wiki 甚至有一个页面专门 介绍了源端口的可移植性。如果我们没有原始的源代码,并且如果该源代码没有被移植这么多次,我们可能不会有这个演示。当然,这仍然是可能的,但谁能说这真的会发生呢?
欢迎来到地狱
《毁灭战士》是有史以来最有影响力的游戏之一,其中很大一部分原因在于它的制作环境。针对 PC 的高度优化代码与共享软件模型相结合,使这款游戏广受欢迎,当 1997 年源代码发布时, 其模组社区如滚雪球般迅速增长。今天,我们不仅通过《Doom》拥有最大、最容易访问的模组平台之一,而且还拥有一个已经远远超出了其最初目的的应用程序。
写这个故事时我开始怀念,你读完后可能也会有同样的感觉。如果您愿意,我建议您下载GZDoom并体验多年来创建的一些疯狂关卡 – 您也可以找到在线存档的前两款游戏的原始 WAD 文件。如果您想更深入地了解,请查看MyHouse.WAD 上的纪录片(该视频有大约 1300 万次观看),或者更好的是, 您可以自己下载该关卡。
而且,如果你想保持将《毁灭战士》放置在不应该的地方的精神,一些慷慨的开发人员已经记录了他们在不同设备上的旅程。有一篇文章介绍了如何将其安装在Ikko Activebuds 耳塞上,还有一篇文章介绍了如何将其安装在VoIP 电话上。还有一篇关于将游戏移植到前面提到的VX620 支付终端的深入文章。
无论您如何享受、扩展或彻底改变《毁灭战士》,请在地狱中享受乐趣。数十万粉丝和开发者正在那里等待着您。