本页目录

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

Quake-2 · id-Software/Quake-2

id Software 发布的《雷神之锤2》3.19 版完整源代码,使用 C 语言编写;官方说明可用 Visual C++ 6.0 构建,Linux 版本应当可编译,但在发布前未做测试。代码整体以 GPL 授权,允许商用,但分发二进制版本时须免费公开全部源码。原版游戏...

动作游戏 射击 自研引擎 C++ 角色控制 游戏状态管理 音频系统 渲染技术 高级
★ Stars 3,374 Forks 767 License 未明确 更新 2026-11-13

国内开发环境适配

Windows
AI 推断/待核验
Linux
AI 推断/待核验
macOS
官方声明支持
引擎 / 框架:自研引擎 暂无中文教程标记 未标记站长实测
构建依赖 CMake 与 vcpkg 工具链,需拉取 ZMusic、MoltenVK、OpenAL Soft 等第三方组件,国内网络下可能需配置镜像或代理;源码与依赖体积较大、编译耗时较长;具体可编译性待核验。

中文项目介绍

Raze 是 ZDoom 社区团队维护的一个大型 C++ 开源项目,它的定位很难用「模拟器」或「前端」来概括:项目以 GZDoom 长期积累的引擎基础设施为底座,把原本基于 Ken Silverman 的 Build 引擎的多款经典第一人称射击游戏,改写成运行在同一套现代代码框架里的统一程序。README 开篇即说明,它把《毁灭公爵 3D》《血祭》《红脖子农场》《影子武士》以及《Exhumed/Powerslave》合并进一个安装包,并额外具备运行 Nam 与 WW2 GI 的能力。也就是说,玩家不再需要为每一款老游戏单独准备一个年代久远的可执行文件,而是通过同一个可执行程序、同一套显示与音频设置来启动不同的游戏模块。

从代码血统看,Raze 的各游戏模块并非凭空重写,而是分别接续了社区多年逆向与源码重建的成果。毁灭公爵模块建立在 JFDuke 与 EDuke 2.0 之上,并吸收了 DukeGDX 的 World Tour 扩展内容以及 EDuke32 的一些小修补;红脖子农场模块来自 Nuke.YKT 在 Rednukem 仓库中整理的重建源码;血祭模块基于 NBlood;影子武士模块来自 SWP 与 VoidSW;Exhumed/Powerslave 模块则以 PCExhumed 为基础,并借鉴了 PowerslaveGDX 的若干增强。这种「一个外壳、多个来源模块」的结构,使项目同时承担了移植、整合与持续维护三重角色。

在技术层面,Raze 复用 GZDoom 一侧已经成熟的渲染、音频、输入与平台抽象层,把不同 Build 游戏的关卡数据、实体逻辑与武器系统分别接入统一的主循环。许可证结构也反映了这种混合来源:非 Build 部分的代码以 GPL v2 发布,Build Engine & Tools 的版权归 Ken Silverman,需参照仓库内的 BUILDLIC.TXT;Duke Nukem 3D、Shadow Warrior 的原始源码版权属于 3D Realms,EDuke32/VoidSW、NBlood、PCExhumed、BuildGDX 各有独立的贡献者许可,README 要求读者按文件逐个查看。对希望研究「老引擎如何被现代代码库承载」的开发者来说,这是一个信息量很大的样本。

核心功能

核心特性

构建方面,README 没有走「一键脚本」路线,而是把读者引向 zdoom.org 的 wiki,在页面右下角的 Programmer's Corner 中按平台选择编译方式,并特别提醒要把仓库地址替换成本项目而不是 GZDoom。文档中唯一给出完整命令示例的是 macOS:需要使用与 CI 构建匹配的 ZMusic 1.1.14;采用 vcpkg 工具链时,可通过 -DMOLTENVK_VCPKG=ON、-DOPENAL_SOFT_VCPKG=ON、-DDYN_OPENAL=OFF 这几个选项把 MoltenVK 运行时与 OpenAL Soft 音频一起打包;本地 vcpkg overlay 会下载 MoltenVK 1.4.2 的官方 macOS 二进制、校验其校验和,并把运行时与许可证一并放进 raze.app。该路径同时支持 Apple Silicon 与 Intel Mac,要求 macOS 12 或更高版本,并且 Vulkan 必须保持开启(HAVE_VULKAN=ON 为默认值);MoltenVK 选项默认关闭,关闭时也可以使用系统外部安装的 Vulkan 运行时。

项目的社区入口在 README 里列得相当齐全:官网 raze.zdoom.org、ZDoom 论坛的专属版块、raze.zdoom.org/wiki 维基、Discord 服务器,以及一份用于协作的 Google Docs 翻译表。仓库顶部的 GitHub Actions 持续集成徽章表明项目保持自动构建验证的习惯,这对一个需要覆盖多平台、多编译器的 C++ 工程而言是必要的工程实践。

适合从这个项目学习的内容包括:大型 C++ 代码库如何按游戏模块做目录级隔离;如何在不同来源的源码之间统一坐标系、实体模型与存档格式;渲染与音频后端如何与游戏逻辑解耦;以及跨平台构建中第三方原生库(如 MoltenVK、OpenAL Soft、ZMusic)的打包与校验流程。需要注意的是,Raze 本身不附带任何商业游戏的关卡与素材数据,使用者必须自备合法获得的游戏资源,具体哪些版本、哪些资料片可被识别,应以项目 wiki 与社区说明为准,本文不作断言。另外,项目体量大、编译依赖多,初次上手的心智负担明显高于普通小游戏仓库;Windows 与 Linux 的官方支持情况 README 未逐条列出,建议以官方发布页和 wiki 为准。

技术架构分析

技术要点

最后需要强调一点:Raze 的价值不仅是「让老游戏在新系统上能跑」,更在于它把多条彼此独立的逆向工程与源码重建脉络收束到同一个可持续维护的上游。对复古 FPS 玩家,它意味着统一的画面缩放、控制器与音频配置体验;对开发者,它是一份关于引擎移植、模块化重构与许可证合规的长期实践记录。阅读时建议从游戏模块目录与构建脚本入手,再逐步深入 GZDoom 侧的渲染与音频抽象,避免一上来就陷入庞大的公共代码。

开源许可证与版权说明

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

相似项目