Quake II Rerelease 游戏源码
id Software 官方开源的《雷神之锤2》2023 重制版游戏逻辑代码,包含 baseq2、ctf、rogue、xatrix 等模块,供玩家制作 MOD 与学习经典 FPS 游戏架构。
爱鲜报评分
0 人评分
2.2k
星数
否
中文
C
主语言
是
活跃
1
贡献者
人工分析
EDITORIAL推荐理由
这是 id Software 官方放出的商业级 FPS 游戏逻辑源码,包含完整的武器、怪物、AI、物理与网络同步实现,是学习 C/C++ 游戏编程的珍贵资料。代码从 C 迁移到 C++17/20,并引入 cgame 模块与 40Hz tickrate 等现代化改造,对 MOD 开发者和引擎研究者都很有价值。
适用场景
- Quake II 重制版 MOD 开发
- 经典 FPS 游戏逻辑与 AI 研究
- C++ 游戏引擎架构学习
- 多人联机网络同步机制分析
- 复古游戏逆向与二次创作
优点
- id Software 官方开源,代码质量与工程结构权威可靠
- 涵盖武器、怪物、物理、网络等完整游戏逻辑,学习价值高
- 已迁移到 C++17/20,支持现代编译器与格式化库
- 引入 cgame 模块与 40Hz tickrate,扩展性与手感更佳
- GPL-2.0 许可,可自由学习、修改与分发
缺点
- 需要自行准备 Quake II 重制版游戏本体与资源文件
- 构建依赖 fmtlib、jsoncpp 等第三方库,环境配置略繁琐
- 旧 MOD 因 API 与结构大改,迁移成本较高
- 官方不提供技术支持,遇到问题需依赖社区
- 代码规模较大,新手直接上手有一定门槛
项目简介
本仓库是 id Software 官方开源的《雷神之锤2》(Quake II)2023 重制版游戏逻辑源码,主要面向希望制作 MOD 的玩家与研究者。仓库同时保留了原始游戏代码作为参考。
重制版使用新版 API 在服务端与游戏模块之间通信,并引入了类似《雷神之锤3》cgame 的「客户端游戏」模块,让此前硬编码的客户端行为也能被 MOD 修改。网络协议版本更新为 2023。
代码结构
- 合并了原版的多个独立模块:
baseq2、ctf、rogue、xatrix - 需要 C++17 编译器
- 因 spawnflags 冲突,部分地图被修改,原版资料片地图可能无法直接加载
- 附带开发用 FGD 与修改过的 TrenchBroom
gameconfig.cfg
编译要点
官方仅在 Clang、VS2019、VS2022 上测试过,C++17 与 C++20 均可编译。
必须定义的预处理宏:
GAME_INCLUDE:声明当前编译的是游戏 DLLKEX_Q2GAME_EXPORTS:导出GetGameAPI函数KEX_Q2GAME_DYNAMIC:PC 平台始终动态链接NO_FMT_SOURCE:内部构建系统限制所需
依赖库:
两者也可通过 vcpkg 安装:
vcpkg install jsoncpp:x64-windows fmt:x64-windows
Windows 下建议把源码放入 MOD 目录的子文件夹(如 mymod/src),再打开 game.sln 构建。
主要技术变化
40Hz Tickrate
游戏逻辑由原版 10Hz 提升到 40Hz,即 25ms 步进,兼顾带宽与 CPU 开销,让地图与逻辑运行更精细。
打印与格式化
游戏 DLL 不再使用可变参数,改由调用方负责格式化,并几乎全面使用 fmt。edict_t、vec3_t 等内置类型可直接格式化。
数学与类型
数学函数在合适处改为 constexpr,并用运算符重载贴近 QuakeC 写法,例如 VectorMA(a, s, b, c) 可写成 c = a + (b * s)。qboolean 由 int32_t 改为 bool。
Info Keys 与 UTF-8
重制版引擎支持 UTF-8 玩家名,info key 解析交由引擎负责。分屏支持使变量带编号后缀,如 name_0、skin_1。
玩家移动(pmove)
pmove 同时作为 game_export_t 与 cgame_export_t 的导出,允许 MOD 修改物理同时兼容客户端预测。保留了大量原版移动特性,并将 trick jump 明确为一种移动类型。
扩展机制
所有引擎接口都预留了 GetExtension 桩函数,便于未来社区引擎返回命名结构体,类似 QuakeC 中常见的 getextension。
适用人群
适合熟悉 C/C++、对经典 FPS 游戏逻辑与 MOD 开发感兴趣的开发者。由于 API 与结构变动较大,旧 MOD 迁移到新代码库可能需要重写。
评论
- 暂无评论,来写第一条吧。