本页目录

雷神之锤(Quake)GPL 完整源码发布

Quake · id-Software/Quake

id Software 以 GPL 协议公开的《雷神之锤》完整源码,含 winquake、glquake、quakeworld、glquakeworld 四个工程,语言为 C。README 说明原工程在 Visual C++ 6.0 下测试过,汇编文件需 masm;可通过修改 #define 只用 C 构建,但软件渲...

动作游戏 射击 多人对战 自研引擎 C 碰撞检测 物理系统 游戏状态管理 网络联机 高级
★ Stars 6,131 Forks 1,084 License 未明确 更新 2026-11-13

国内开发环境适配

Windows
官方声明支持
Linux
AI 推断/待核验
macOS
未知
引擎 / 框架:自研引擎 暂无中文教程标记 未标记站长实测
构建依赖 Visual C++ 6.0 与 masm,属于较老的工具链,国内获取与配置可能不便;README 提到 gas2masm 用于让 DOS/Linux/Windows 共用源码,但未给出 Linux 构建步骤,Linux 下能否直接构建待核验。游戏数据文件需另行获取,且原始数据不可再分发。

中文项目介绍

这是 id Software 以 GPL 协议公开的《雷神之锤》(Quake)完整源代码,涵盖四个工程:winquake、glquake、quakeworld 与 glquakeworld。README 由 John Carmack 撰写,明确说明本次发布的主要意图是娱乐与教育用途,同时 GPL 也允许在遵守完整许可证的前提下进行商业利用。

需要特别区分的是:代码本身采用 GPL 授权,但《雷神之锤》的原始数据文件(贴图、关卡、音效等)仍保留原有版权与授权条款,不能随代码一起再分发。若开发者想做真正的完全转换(total conversion),可以基于这套代码制作独立游戏。

核心功能

四个完整工程

winquake 与 glquake 分别对应软件渲染与 OpenGL 渲染的 Windows 版本;quakeworld 与 glquakeworld 对应 QuakeWorld 的软件渲染与 OpenGL 版本。

双渲染路径

软件渲染版本与 OpenGL 版本并存,便于对照学习早期 3D 引擎的两种实现思路。

汇编优化可选

工程中包含汇编语言文件,构建时需要 masm;也可以通过修改一个 `#define` 改为纯 C 构建。

跨平台源码复用

README 提到 gas2masm 工具的存在,目的是让 DOS、Linux 与 Windows 版本共用同一份源码。

DOS 版本可构建

原始 DOS 版 Quake 理论上也能从这份源码构建,但作者表示并未实际尝试。

技术架构分析

技术要点

README 对构建条件给出了明确说明,这些信息对理解代码结构很关键:

  • 工程在 Visual C++ 6.0 下测试过,但汇编文件需要 masm 参与构建。
  • 若改为纯 C 构建,软件渲染版本会损失接近一半的速度;OpenGL 版本受到的影响则不大。这说明汇编优化主要集中在软件渲染路径上。
  • 作者本人并不推荐随意改动汇编代码,gas2masm 只是为了让多平台共用源码而存在。

从工程命名可以看出,代码库同时覆盖单机 Quake 与面向网络对战的 QuakeWorld 两条产品线,是研究 1990 年代后期 3D 射击游戏引擎组织方式的原始材料。

构建与运行

根据 README,构建这套源码需要注意以下几点:

  1. 准备 Visual C++ 6.0 环境,这是原作者测试过的工具链。
  2. 准备 masm 以编译汇编语言文件;若不想处理汇编,可修改 #define 切换为纯 C 构建,但需接受软件渲染版本的性能下降。
  3. 四个工程可分别构建,按需选择软件渲染或 OpenGL 渲染版本。

关于运行:代码本身不包含游戏数据。README 说明可以下载原始的 Quake 演示数据配合代码使用,但演示数据的再分发存在限制。若从未购买过完整版 Quake,作者建议去软件廉价区寻找原版,或寻找包含两个任务包的《Quake: the offering》盒装版。

补充说明

授权与分发

README 用较大篇幅解释了选择 GPL 的原因:

  • 此前的代码发布采用禁止商业利用的许可证,且没有强制共享源码的条款,导致部分 mod 团队保持源码闭源,甚至出现源码丢失的情况,对社区造成损失。
  • GPL 的核心要求是:分发新的二进制版本时,必须向所有人免费提供完整源代码。
  • 若确实需要商业使用又无法接受公开源码,作者表示可以另行协商单独的许可协议,但仍鼓励直接接受 GPL。
  • 作者还鼓励团队更进一步,尽可能使用公共 CVS 服务器进行开发。

此外,README 提到作者会考虑修改共享版章节的许可,以便更自由地复制(例如用于 Linux 发行版),但未给出时间表。

学习建议

这份代码适合作为研究早期 3D 射击游戏引擎的原始样本:可以对比软件渲染与 OpenGL 两条路径的实现差异,观察汇编优化在何处被使用,以及 QuakeWorld 与单机版本在工程组织上的区别。由于工具链较老,建议先通读 README 的构建说明,再决定是否启用汇编优化路径。

开源许可证与版权说明

许可证标识:未明确。源码、资源与依赖许可可能不同,请以官方仓库为准。本站仅做索引,不托管源码。

相似项目