1997年《雷神之锤》Win32二进制文件构建过程大揭秘手把手教你重现编译2026年2月5日让我们像1997年那样编译《雷神之锤》《雷神之锤》_Quake_的第一批可执行文件 quake.exe 和 vquake.exe 是在运行 NeXT 系统的 HP 712 - 60 上编写并通过运行在 DEC Alpha 服务器 2100A 上的 DJGPP 进行交叉编译的。1996年6月在发布游戏后由于担心 NeXT 系统发展停滞id Software 更换了他们的开发环境。约翰·卡马克曾说“发布《雷神之锤》后我们立即转向运行 Windows NT 的 Intergraph 硬件。”《雷神之锤》的后续版本如 winquake.exe、glquake.exe 以及《雷神之锤世界》_QuakeWorld_qwcl.exe 和 qwsv.exe都是在 Windows NT 系统上使用 Visual C 4.X 开发和编译的。本文将介绍如何重现1997年构建《雷神之锤》Win32 二进制文件的过程。纯粹主义者的选择根据想要达到的历史准确性程度可以在四种环境中按以下步骤操作找一台 Intergraph RealizM 双 P6 - 200MHz 工作站祝你好运。找一台双奔腾 Pro 机器再次祝你好运但找到一台 W6 - LI 还是有可能的。使用一台像 [《雷神之锤》专用 PC](../quake_pc) 这样的90年代末期普通 PC。下载 Oracle 的 Virtualbox 并创建一个虚拟机。我在《雷神之锤》专用 PC 和 Virtualbox 中都测试了这些步骤系统运行的是 Windows 98SE 或 Windows NT 4.0。安装 Windows NT 4安装 Windows NT 4 相当容易因为安装光盘是可引导的整个安装过程耗时30分钟。我很喜欢 Windows NT 启动画面的简约风格。它会清晰显示检测到的 CPU 数量Windows 95/98 仅支持单 CPU以及可用的内存大小而且没有那些花哨的动画。在系统中添加第二个 CPU 时Windows NT 不会自动检测到需要重新安装系统才能让 HAL 支持对称多处理SMP系统。对于双 CPU 主板也是如此。在 W6 - LI 上不仅要添加另一个奔腾 Pro 处理器还需要安装一个调节器Windows NT 4 使用的 UI 主题与 Windows 9X 相同。其第一个版本 Windows NT 3 使用的 UI 元素与 Windows 3.1 相同看起来很糟糕。安装 Visual C 6《雷神之锤》的 Win32 版本最初是用 Visual C 4.X 编写的因为这是1996年年中时微软最新的集成开发环境IDE。不过到了1999年该项目已迁移到 Visual C 6。如果手头没有安装光盘很可能可以在 Internet Archive 或 winworldpc.com 上找到它。在网络还未普及的时代大多数软件都有产品 ID 来防止盗版。安装界面还展示了下一个“Visual Studio”它整合了多个开发环境很快就成为了微软的主流 IDE。安装界面看起来有些奇怪有很多空白区域进度条的位置也很别扭。这是因为微软没想到它会在 1280x1024 这样的高分辨率下运行id 开发者可能在他们的21英寸显示器上使用了这个分辨率只有在 640x480 或 800x600 分辨率下才会显示正常。安装好 VC6 后需要获取源代码。不要从 GitHub 上获取也不要通过 FTP 传输文件否则会破坏工作区的 .dsw 文件导致 VC6 无法解析而且它不会给出错误信息只是打开后显示没有关联的文件或项目可能会花半天时间来调试这个问题。相反需要下载 [q1source.zip](q1source.zip)。它曾经可以从 id Software 的 FTP 服务器上获取现在可以从 Jason Brownless 维护的很棒的 [《雷神之锤》官方存档](https://github.com/Jason2Brownlee/QuakeOfficialArchive) 中获取。如果使用虚拟机可以通过拖放来传输文件也可以使用适用于 9X/NT 的 _Quick ‘n Easy FTP Server_。要解压 q1source.zip需要 WinRar2.50 版本在 9X/NT 系统上仍然可以正常使用。现在启动 VC6选择“打开工作区”然后选择“WinQuake.dsw”。现代版本的 Visual Studio 使用 .sln解决方案和 .vcxproj 文件而 Visual C 6 使用 .dsp 和 .dsw 文件。.dsp 文件包含单个项目而 .dsw 是指向 .dsp 项目的工作区文件。选择“全部重建”开始编译。编译会失败因为 VC6 无法汇编所有包含 Michael Abrash 手工优化汇编代码的 .s 文件。.s 文件是通过“mycoolbuild”的“自定义构建”步骤构建的该步骤依赖于 ml.exe 汇编器它包含在 VC6 处理器包vcpp5.exe中。首先安装 Visual Studio 6.0 服务包 5vc6sp5.exe。当然直接运行 setupsp5.exe 会失败因为需要先安装 MDAC 2.5。别花时间从其他地方下载 MDAC只需运行 vs6spp5.exe 解压后所在文件夹中的 mdac_typ.exe 即可。返回并运行 setupsp5.exe这次应该可以成功安装。到这一步感觉就像在解《猴岛小英雄》里的谜题一切都让人摸不着头脑仿佛真的回到了90年代。又是一个小小的进度条但这也是一种进展。安装 VC6 处理器包vcpp5.exe。现在应该能在 VC6 的 bin 文件夹中看到 ml.exe 和 cl.exe。用 VC6 重新打开项目再次选择“全部重建”这次应该可以成功编译。没错编译成功了需要复制 PmProXX.dll、WdirXX.dll 和 id1 文件游戏应该就能启动了。甚至可以构建并运行 [《雷神之锤世界》](../quakeworld)它还能和 QSpy 一起使用一款出色的 IDE对于1996年来说VC6 功能相当强大。它具备“转到定义”、断点调试、堆栈跟踪和变量检查等功能不过还没有智能感知自动补全功能。我从未使用过它但在当时它肯定就像一场美梦。参考文献序号详情[1]与约翰·卡马克的对话。[2][《雷神之锤》官方存档](https://github.com/Jason2Brownlee/QuakeOfficialArchive)
揭秘1997年《雷神之锤》Win32二进制文件构建过程,手把手教你重现编译!
1997年《雷神之锤》Win32二进制文件构建过程大揭秘手把手教你重现编译2026年2月5日让我们像1997年那样编译《雷神之锤》《雷神之锤》_Quake_的第一批可执行文件 quake.exe 和 vquake.exe 是在运行 NeXT 系统的 HP 712 - 60 上编写并通过运行在 DEC Alpha 服务器 2100A 上的 DJGPP 进行交叉编译的。1996年6月在发布游戏后由于担心 NeXT 系统发展停滞id Software 更换了他们的开发环境。约翰·卡马克曾说“发布《雷神之锤》后我们立即转向运行 Windows NT 的 Intergraph 硬件。”《雷神之锤》的后续版本如 winquake.exe、glquake.exe 以及《雷神之锤世界》_QuakeWorld_qwcl.exe 和 qwsv.exe都是在 Windows NT 系统上使用 Visual C 4.X 开发和编译的。本文将介绍如何重现1997年构建《雷神之锤》Win32 二进制文件的过程。纯粹主义者的选择根据想要达到的历史准确性程度可以在四种环境中按以下步骤操作找一台 Intergraph RealizM 双 P6 - 200MHz 工作站祝你好运。找一台双奔腾 Pro 机器再次祝你好运但找到一台 W6 - LI 还是有可能的。使用一台像 [《雷神之锤》专用 PC](../quake_pc) 这样的90年代末期普通 PC。下载 Oracle 的 Virtualbox 并创建一个虚拟机。我在《雷神之锤》专用 PC 和 Virtualbox 中都测试了这些步骤系统运行的是 Windows 98SE 或 Windows NT 4.0。安装 Windows NT 4安装 Windows NT 4 相当容易因为安装光盘是可引导的整个安装过程耗时30分钟。我很喜欢 Windows NT 启动画面的简约风格。它会清晰显示检测到的 CPU 数量Windows 95/98 仅支持单 CPU以及可用的内存大小而且没有那些花哨的动画。在系统中添加第二个 CPU 时Windows NT 不会自动检测到需要重新安装系统才能让 HAL 支持对称多处理SMP系统。对于双 CPU 主板也是如此。在 W6 - LI 上不仅要添加另一个奔腾 Pro 处理器还需要安装一个调节器Windows NT 4 使用的 UI 主题与 Windows 9X 相同。其第一个版本 Windows NT 3 使用的 UI 元素与 Windows 3.1 相同看起来很糟糕。安装 Visual C 6《雷神之锤》的 Win32 版本最初是用 Visual C 4.X 编写的因为这是1996年年中时微软最新的集成开发环境IDE。不过到了1999年该项目已迁移到 Visual C 6。如果手头没有安装光盘很可能可以在 Internet Archive 或 winworldpc.com 上找到它。在网络还未普及的时代大多数软件都有产品 ID 来防止盗版。安装界面还展示了下一个“Visual Studio”它整合了多个开发环境很快就成为了微软的主流 IDE。安装界面看起来有些奇怪有很多空白区域进度条的位置也很别扭。这是因为微软没想到它会在 1280x1024 这样的高分辨率下运行id 开发者可能在他们的21英寸显示器上使用了这个分辨率只有在 640x480 或 800x600 分辨率下才会显示正常。安装好 VC6 后需要获取源代码。不要从 GitHub 上获取也不要通过 FTP 传输文件否则会破坏工作区的 .dsw 文件导致 VC6 无法解析而且它不会给出错误信息只是打开后显示没有关联的文件或项目可能会花半天时间来调试这个问题。相反需要下载 [q1source.zip](q1source.zip)。它曾经可以从 id Software 的 FTP 服务器上获取现在可以从 Jason Brownless 维护的很棒的 [《雷神之锤》官方存档](https://github.com/Jason2Brownlee/QuakeOfficialArchive) 中获取。如果使用虚拟机可以通过拖放来传输文件也可以使用适用于 9X/NT 的 _Quick ‘n Easy FTP Server_。要解压 q1source.zip需要 WinRar2.50 版本在 9X/NT 系统上仍然可以正常使用。现在启动 VC6选择“打开工作区”然后选择“WinQuake.dsw”。现代版本的 Visual Studio 使用 .sln解决方案和 .vcxproj 文件而 Visual C 6 使用 .dsp 和 .dsw 文件。.dsp 文件包含单个项目而 .dsw 是指向 .dsp 项目的工作区文件。选择“全部重建”开始编译。编译会失败因为 VC6 无法汇编所有包含 Michael Abrash 手工优化汇编代码的 .s 文件。.s 文件是通过“mycoolbuild”的“自定义构建”步骤构建的该步骤依赖于 ml.exe 汇编器它包含在 VC6 处理器包vcpp5.exe中。首先安装 Visual Studio 6.0 服务包 5vc6sp5.exe。当然直接运行 setupsp5.exe 会失败因为需要先安装 MDAC 2.5。别花时间从其他地方下载 MDAC只需运行 vs6spp5.exe 解压后所在文件夹中的 mdac_typ.exe 即可。返回并运行 setupsp5.exe这次应该可以成功安装。到这一步感觉就像在解《猴岛小英雄》里的谜题一切都让人摸不着头脑仿佛真的回到了90年代。又是一个小小的进度条但这也是一种进展。安装 VC6 处理器包vcpp5.exe。现在应该能在 VC6 的 bin 文件夹中看到 ml.exe 和 cl.exe。用 VC6 重新打开项目再次选择“全部重建”这次应该可以成功编译。没错编译成功了需要复制 PmProXX.dll、WdirXX.dll 和 id1 文件游戏应该就能启动了。甚至可以构建并运行 [《雷神之锤世界》](../quakeworld)它还能和 QSpy 一起使用一款出色的 IDE对于1996年来说VC6 功能相当强大。它具备“转到定义”、断点调试、堆栈跟踪和变量检查等功能不过还没有智能感知自动补全功能。我从未使用过它但在当时它肯定就像一场美梦。参考文献序号详情[1]与约翰·卡马克的对话。[2][《雷神之锤》官方存档](https://github.com/Jason2Brownlee/QuakeOfficialArchive)