四个完整工程
winquake 与 glquake 分别对应软件渲染与 OpenGL 渲染的 Windows 版本;quakeworld 与 glquakeworld 对应 QuakeWorld 的软件渲染与 OpenGL 版本。
Quake · id-Software/Quake
id Software 以 GPL 协议公开的《雷神之锤》完整源码,含 winquake、glquake、quakeworld、glquakeworld 四个工程,语言为 C。README 说明原工程在 Visual C++ 6.0 下测试过,汇编文件需 masm;可通过修改 #define 只用 C 构建,但软件渲...
这是 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 版 Quake 理论上也能从这份源码构建,但作者表示并未实际尝试。
README 对构建条件给出了明确说明,这些信息对理解代码结构很关键:
从工程命名可以看出,代码库同时覆盖单机 Quake 与面向网络对战的 QuakeWorld 两条产品线,是研究 1990 年代后期 3D 射击游戏引擎组织方式的原始材料。
根据 README,构建这套源码需要注意以下几点:
#define 切换为纯 C 构建,但需接受软件渲染版本的性能下降。关于运行:代码本身不包含游戏数据。README 说明可以下载原始的 Quake 演示数据配合代码使用,但演示数据的再分发存在限制。若从未购买过完整版 Quake,作者建议去软件廉价区寻找原版,或寻找包含两个任务包的《Quake: the offering》盒装版。
README 用较大篇幅解释了选择 GPL 的原因:
此外,README 提到作者会考虑修改共享版章节的许可,以便更自由地复制(例如用于 Linux 发行版),但未给出时间表。
这份代码适合作为研究早期 3D 射击游戏引擎的原始样本:可以对比软件渲染与 OpenGL 两条路径的实现差异,观察汇编优化在何处被使用,以及 QuakeWorld 与单机版本在工程组织上的区别。由于工具链较老,建议先通读 README 的构建说明,再决定是否启用汇编优化路径。
Frogatto & Friends 是一款 2D 横版动作冒险游戏,主角是一只青蛙;开发团队...
NBlood 是用 EDuke32 引擎技术与开发思路对 Build 引擎游戏所做的逆向工程移...
open-goal/jak-project 是面向 PS2《Jak & Daxter》系列的开源逆向工程与反编...
id Software 以 GPL 许可证发布的《雷神之锤3竞技场》(Quake III Arena)源...
DDNet 是 Teeworlds 的一个模组,源自 DDRace,是一款免费的合作型 2D 平台跳...