本页目录

《毁灭公爵II》现代跨平台重实现引擎(RigelEngine)

RigelEngine · lethal-guitar/RigelEngine

RigelEngine 用现代 C++ 重实现了 Apogee 于 1993 年发行的经典 DOS 游戏《毁灭公爵II》,可作为原版可执行文件的直接替代:读取原版游戏数据文件即可运行,玩法与原作一致,但能在现代操作系统上原生运行。项目使用 C++17、OpenGL 与实...

射击 SDL 自研引擎 C 角色控制 音频系统 渲染技术 专家
★ Stars 1,017 Forks 72 License GPL-2.0 更新 2026-11-10

国内开发环境适配

Windows
官方声明支持
Linux
官方声明支持
macOS
官方声明支持
引擎 / 框架:SDL 暂无中文教程标记 未标记站长实测
需 CMake ≥3.21 与 Ninja;Windows/macOS 走内置 vcpkg 子模块,克隆时须加 --recurse-submodules,国内拉取 vcpkg 与依赖包较慢,建议配置镜像或代理;Linux 需自行安装 SDL2(≥2.26.5)、SDL2_net、libvorbis、libflac、libmad 开发包,发行版仓库版本可能偏旧。运行还需自备原版 Quake 游戏数据文件。

中文项目介绍

Chocolate Quake 是由开发者 Henrique194 维护的《Quake》源码移植项目,命名与整体设计哲学直接致敬 Chocolate Doom:把「还原原版」放在所有功能增强之前。它瞄准的目标版本是 Quake v1.09(即 WinQuake)以及更早的 DOS 发行版,追求的是行为层面的高保真复现,而非画面层面的现代化。README 把项目宗旨写得很直白:高精度重现 v1.09 与更早 DOS 版的行为,连原版中存在的 bug 与各种怪癖都一并保留;输入处理、渲染方式与计时逻辑尽量贴近当年的实际体验;不引入任何硬件加速或现代视觉特效。换句话说,它更像一台面向 90 年代玩家的「时间机器」,而不是一个堆叠了新特性、新特效的现代增强引擎。

在项目哲学一节里,作者明确把目标用户圈定为纯粹主义者:没有花哨的增强,没有现代特效,只有当年那个 Quake。如果你期待的是宽屏修正、纹理过滤、光影升级或者现代化的操作便利,这个移植并不是为你准备的;但如果你想要的是「1990 年代玩到的那份手感」,它正是为此而生。这种取舍意味着项目会主动放弃一些在今天看来理所当然的改进,例如它不会为了画面平滑而改动原始的渲染路径,也不会为了让手感更「顺」而重写计时与输入逻辑——保留怪癖本身就是设计目标的一部分。

从代码与技术栈看,Chocolate Quake 是一个纯 C 的 C99 项目,使用 CMake(要求 3.21 或更高版本)组织构建,并提供了预设(presets)来简化跨平台编译流程,官方推荐搭配 Ninja 使用。图形与输入、网络等底层能力依托 SDL2(最低 2.26.5)以及 SDL2_net;音频侧依赖 libvorbis 与 libvorbisfile、libflac 以及 libmad(用于 MP3)等解码库。仓库把 vcpkg 作为 Git 子模块内置,这也是在 Windows 与 macOS 上构建的推荐方式。README 还特别致谢 QuakeSpasm Spiked,因为声音与输入子系统的部分实现改编自该项目。

核心功能

核心特性

构建流程分为两条典型路径。在 Windows 与 macOS 上,一般先以 --recurse-submodules 克隆仓库,然后依次执行 cmake --preset release-vcpkg 与 cmake --build --preset release-vcpkg,调试构建则把预设名换成 debug-vcpkg。在 Linux 上,项目通常直接链接发行版提供的系统库,用户先用包管理器装好依赖,再使用 release 或 debug 预设构建。编译完成后,发布版可执行文件位于 cmake-build-release/src/Release,调试版位于 cmake-build-debug/src/Debug。

运行游戏需要自备原版游戏数据:在可执行文件能找到的位置放一个名为 id1 的目录,并把 PAK 文件放进去。目录的位置与名称都可以通过命令行参数 -basedir 与 -game 调整,多数 IDE 也允许直接设置工作目录来免去参数。默认搜索路径按平台区分:Windows 下是 exe 所在目录;macOS 下是 ~/Library/Application Support/chocolate-quake;Linux 下是 ~/.local/share/chocolate-quake。音乐方面,它支持外部音轨播放,格式包括 MP3、OGG、FLAC 与 WAV;只需在 id1 游戏目录中新建 music 子目录,并按 track02 到 track11 的命名约定放入曲目,即可对应原版 CD 音轨。

平台支持在 README 中以表格形式明确列出:Windows、Linux、macOS 三端均为支持状态,其中 Linux 端有社区成员参与较为充分的测试与问题反馈。许可方面项目采用 GPLv3,图标素材则改编自 EmojiTwo 项目(CC-BY-4.0)并经过修改,二次分发时需要留意这两层授权要求。项目主页指向 doomworld 论坛的相关讨论帖,可作为获取进展与交流的入口。

技术架构分析

技术要点

对于学习者,这个仓库的价值主要不在「如何做一款新游戏」,而在「如何忠实地移植与维护一款老游戏」:可以研究它如何在 SDL2 之上重建输入与音频子系统、如何用 CMake 预设与 vcpkg 组织三平台构建、以及如何在不改变原始行为的前提下替换底层平台相关代码。需要注意的是,它不提供任何现代渲染增强,画面与手感都停留在上世纪的原味状态;同时必须自备商业游戏数据才能实际运行,仓库本身不含可玩内容,且面向新手的使用文档相对有限,部分细节需要结合社区讨论与源码阅读来理解。

开源许可证与版权说明

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

相似项目