让我们像1997年一样编译 Quake
Source: Hacker News
2026年2月5日
纯粹主义者的角落
根据你想要的历史准确程度,你可以在以下四种环境中进行操作:
- Intergraph RealizM Dual P6‑200 MHz workstation – 祝你好运。
- Dual Pentium Pro machine – 同样有点困难,但找到 W6‑LI 还是可以做到的。
- 普通的 90 年代后期 PC – 例如,Quake PC。
- Oracle VirtualBox – 创建一个虚拟机。
我在 Quake PC 和 VirtualBox 上都测试了这些步骤,运行的系统是 Windows 98 SE 或 Windows NT 4.0。
安装 Windows NT 4
安装 Windows NT 4 非常简单,因为光盘是可启动的。整个安装过程大约需要 30 分钟。
我喜欢 Windows NT 启动画面的极简风格。它自豪地显示检测到的 CPU 数量(Windows 95/98 只支持单核)以及内存大小。没有任何花哨的动画。
添加第二颗 CPU 不会被自动检测到;必须重新安装以获得能够处理 SMP 系统的 HAL。同样的情况也适用于双 CPU 主板。在 W6‑LI 上,你不仅需要另一颗 Pentium Pro,还需要一个稳压器!
Windows NT 4 使用与 Windows 9x 相同的 UI 主题。第一版 Windows NT 3 使用的是 Windows 3.1 的 UI 元素,看起来 很糟糕。
安装 Visual C++ 6
Quake 的 Win32 版本最初是使用 Visual C++ 4.x(1996 年中期最新的 Microsoft IDE)编写的。到 1999 年,项目已经迁移到 Visual C++ 6。如果你手头没有光盘,通常可以在 Internet Archive 或 WinWorldPC 上找到。
安装界面
| 步骤 | 截图 |
|---|---|
| 1. Visual C++ 6 安装程序启动 | ![]() |
| 2. 产品序列号输入(“始终在线”互联网出现之前) | ![]() |
| 3. “Visual Studio” 品牌标识(后来的 Microsoft IDE) | ![]() |
| 4. 界面布局(为 640×480 或 800×600 设计) | ![]() |
| 5. 其他界面 | ![]() |
获取源代码
不要从 GitHub 或 FTP 获取源码;这样会损坏 .dsw 工作区文件,导致 VC++ 6 静默失败。请改为下载原始压缩包:
- q1source.zip – 以前在 id Software 的 FTP 服务器上,现在由 Jason Brownless 维护的 Quake Official Archive 托管[2]。

将文件传输到虚拟机
- 拖放(如果使用的是虚拟机)。
- 或使用 Quick ‘n Easy FTP Server,它在 9x 与 NT 上都能工作。

解压压缩包
需要 WinRAR 2.50(在 9x/NT 上仍可使用)。

使用 VC++ 6 构建 Quake
- 启动 Visual C++ 6。
- 选择 File → Open Workspace… 并打开
WinQuake.dsw。
现代的 Visual Studio 使用
.sln(解决方案)和.vcxproj文件,但 VC++ 6 使用.dsp(项目)和.dsw(工作区)文件。.dsp包含单个项目;.dsw指向一个或多个.dsp文件。

- 使用 Build → Rebuild All 开始构建。

- 构建最初会 失败,因为 VC++ 6 无法汇编 Michael Abrash 编写的手工优化
.s文件。

- 安装 VC++ 6 Processor Pack(包含
vcpp5.exe,即汇编器)。

安装该套件后,重新构建,编译应当成功,生成经典的 Win32 Quake 二进制文件。
安装 Processor Pack(MDAC 2.5 前置条件)

当然,直接运行 setupsp5.exe 安装会失败。因为必须先安装 MDAC 2.5。
不要浪费时间去某处下载 MDAC。只需运行 acmsetup.exe,它位于
vs6spp5.exe解压后创建的同一文件夹中。
现在回去再次运行 setupsp5.exe。这次它会成功。此时你会感觉像在玩 Monkey Island 的解谜——一切都不合逻辑,仿佛回到了 90 年代。
进度条更小且有点尴尬,但这仍然是进展。
再次使用 VC++ 6 打开项目并运行 “Rebuild All”。这次应该可以成功。
是的!尽情享受吧!你甚至可以构建/运行 QuakeWorld,并且它可以配合 QSpy 使用!
一个相当不错的 IDE
VC++ 6 对于 1996 年的技术来说非常强大。它具备 “转到定义”、断点、堆栈跟踪和变量检查等功能(但尚未有 IntelliSense 自动补全)。我从未使用过它,但当时一定感觉像是梦想成真。
脚注
[1] John Carmack,id Software 访谈,1996 年。
[2] Jason Brownless,Quake Official Archive,维护于 。
参考文献
- (此处将列出参考文献列表)
















