本页目录

外星虫族对战人类(Unvanquished):开源 FPS/RTS 混合竞技游戏

Unvanquished · Unvanquished/Unvanquished

Unvanquished 是一款自由开源的第一人称射击与即时战略混合游戏,由 Daemon 游戏引擎驱动,使用 C++ 开发。玩法上,两个差异明显的阵营在竞技场地图中对抗,并带有建造等 RTS 元素。据仓库说明,该项目历史上源自 Tremulous,是它的延续...

射击 策略 多人对战 自研引擎 C++ 游戏状态管理 网络联机 音频系统 UI 系统 高级
★ Stars 1,132 Forks 185 License 未明确 更新 2026-11-07

国内开发环境适配

Windows
官方声明支持
Linux
官方声明支持
macOS
官方声明支持
引擎 / 框架:自研引擎 暂无中文教程标记 未标记站长实测
构建需拉取 git 子模块并从网络下载资源包(download-paks 支持 aria2c/curl/wget),国内网络可能较慢,建议配置镜像或代理;依赖包(SDL3、GLEW、OpenAL、libopus 等)需自行准备,具体可用性待核验。

中文项目介绍

Unvanquished 是一款自由开源的第一人称射击(FPS)与即时战略(RTS)混合竞技游戏。根据仓库 README 的描述,它是一款「带有 RTS 元素(可以建造)的竞技场游戏」,两个风格迥异的阵营在其中展开对抗。项目由 Daemon 游戏引擎驱动,游戏逻辑部分以 C++ 编写,源码托管在 GitHub 上。

从历史沿革看,Unvanquished 源自 Tremulous,并作为其延续在长期开发中不断积累工作成果。README 明确说明,本仓库包含的是 Unvanquished 的游戏逻辑源码;如果只是想游玩或搭建服务器,通常只需要构建 Daemon 引擎并下载游戏资源包即可。

官方在下载页面提供开箱即用的发行版本,同时通过 Flatpak、通用 zip 包、SourceForge 等多种渠道分发,社区交流则覆盖 IRC、Matrix 与 Discord。

技术架构分析

技术架构与依赖

项目采用 C++14 标准,README 列出的受支持编译器包括:

  • gcc ≥ 9
  • clang ≥ 11
  • Visual Studio / MSVC(至少 Visual Studio 2019)

构建工具链需要 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 对玩法的直接描述较为精炼,可确认的要点包括:

  • 竞技场对抗:游戏以竞技场地图为核心场景,两个阵营进行对战。
  • RTS 元素:玩家可以在对局中进行建造,这是它区别于纯 FPS 的关键设计。
  • 阵营差异:两个阵营「非常不同」,意味着双方的玩法、单位与建造逻辑存在明显区分。

关于具体的兵种、建筑树、资源机制等细节,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 报错时应优先检查这两点。

开源许可证与版权说明

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

相似项目