NBlood:Build 引擎游戏逆向移植合集(Blood / Rednukem / PCExhumed)
NBlood 是用 EDuke32 引擎技术与开发思路对 Build 引擎游戏所做的逆向工程移...
Unvanquished · Unvanquished/Unvanquished
Unvanquished 是一款自由开源的第一人称射击与即时战略混合游戏,由 Daemon 游戏引擎驱动,使用 C++ 开发。玩法上,两个差异明显的阵营在竞技场地图中对抗,并带有建造等 RTS 元素。据仓库说明,该项目历史上源自 Tremulous,是它的延续...
Unvanquished 是一款自由开源的第一人称射击(FPS)与即时战略(RTS)混合竞技游戏。根据仓库 README 的描述,它是一款「带有 RTS 元素(可以建造)的竞技场游戏」,两个风格迥异的阵营在其中展开对抗。项目由 Daemon 游戏引擎驱动,游戏逻辑部分以 C++ 编写,源码托管在 GitHub 上。
从历史沿革看,Unvanquished 源自 Tremulous,并作为其延续在长期开发中不断积累工作成果。README 明确说明,本仓库包含的是 Unvanquished 的游戏逻辑源码;如果只是想游玩或搭建服务器,通常只需要构建 Daemon 引擎并下载游戏资源包即可。
官方在下载页面提供开箱即用的发行版本,同时通过 Flatpak、通用 zip 包、SourceForge 等多种渠道分发,社区交流则覆盖 IRC、Matrix 与 Discord。
项目采用 C++14 标准,README 列出的受支持编译器包括:
gcc ≥ 9clang ≥ 11构建工具链需要 git、cmake、python(≥ 2)、python-yaml、python-jinja。
必需依赖包括 zlib、libgmp、libnettle、libcurl、SDL3、GLEW、libpng、libjpeg(≥ 8)、libwebp(≥ 0.2.0)、OpenAL、libogg、libvorbis、libopus、libopusfile。
可选依赖为 Freetype、Lua 与 ncurses;其中 Freetype 与 Lua 在系统未提供时会使用子模块版本。
仓库通过 git 子模块组织多个子仓库,因此克隆时必须带上 --recurse-submodules,否则 CMake 会报 daemon/ 等目录文件缺失。
README 给出了较完整的构建路径,核心流程如下。
首次克隆:
git clone --recurse-submodules https://github.com/Unvanquished/Unvanquished.git
已克隆过则补拉子模块:
cd Unvanquished/
git submodule update --init --recursive
可以从下载页获取通用 zip 包,将 pkg/ 目录放入 homepath;也可以使用仓库自带的资源下载脚本,它支持 aria2c、curl 或 wget,其中推荐 aria2c:
./download-paks build/pkg
该命令会把 pkg 放到所构建的 Daemon 引擎的 libpath 下,仅对该构建目录自动可见;若希望所有安装都能找到资源,可下载到 homepath 的 pkg/ 子目录。
在 Linux / macOS 上:
mkdir build; cd build
cmake ..
make -j4
在 MSYS2(Windows 上推荐的 MinGW 构建方式)中:
mkdir build; cd build
cmake .. -G "MSYS Makefiles"
make -j4
使用 Visual Studio 时,运行 CMake、选择编译器,然后打开 Unvanquished.sln 编译即可。
此外还支持从 Linux 交叉编译到 Windows,使用 daemon/cmake/cross-toolchain-mingw64.cmake 工具链文件;32 位构建则改用 cross-toolchain-mingw32.cmake。
README 提示,这一构建过程会同时产出游戏引擎与游戏逻辑,便于测试与调试;-j4 中的数字可替换为 CPU 核心数。
README 对玩法的直接描述较为精炼,可确认的要点包括:
关于具体的兵种、建筑树、资源机制等细节,README 未展开说明,建议以官方 wiki 与游戏内实际内容为准。
构建完成后进入 build/ 目录。Windows 下需使用 daemon.exe 与 daemonded.exe,其余操作一致。
./daemon;若资源包在别处,可用 -pakpath <PATH> 指定。daemonded,例如 ./daemonded +map plat23 从命令行启动首张地图。dist/configs 中的配置样例,这些文件需存放在用户主目录,具体位置参见 wiki 的 game locations 与服务器运行页面。对于开发者,README 还说明了如何以共享库方式加载修改后的游戏逻辑,并从 pkg/unvanquished_src.dpkdir 子模块读取资源:
./daemon -pakpath ../pkg -set vm.sgame.type 3 -set vm.cgame.type 3
需要注意,这种方式只提供基础资源包,会出现其他包缺失的警告,也会缺少原声带等内容。完整资源源码位于 UnvanquishedAssets 仓库,但其中多数资源需先构建才能被引擎正确加载。
这个仓库适合作为研究「FPS 与 RTS 混合玩法逻辑」以及大型 C++ 游戏项目工程组织的参考样本。建议的阅读顺序是:先按 README 完成一次完整构建并跑通客户端与服务器,理解引擎与游戏逻辑的分离方式;再关注 vm.sgame.type / vm.cgame.type 这类开发者开关,体会游戏逻辑以共享库形式热加载的机制;最后结合 wiki 的编译、模组制作与服务器托管文档,尝试小规模修改。由于项目依赖较多且使用子模块,构建阶段最容易卡在依赖缺失与子模块未拉取上,遇到 CMake 报错时应优先检查这两点。
NBlood 是用 EDuke32 引擎技术与开发思路对 Build 引擎游戏所做的逆向工程移...
id Software 以 GPL 许可证发布的《雷神之锤3竞技场》(Quake III Arena)源...
open-goal/jak-project 是面向 PS2《Jak & Daxter》系列的开源逆向工程与反编...
《影子武士》(Shadow Warrior)v1.2 CD 版完整源代码,由 3D Realms 于 2005...