认识 Nau Engine:从源码构建开源游戏引擎
Nau Engine 已经被讨论了很多,但听会议上的公告是一回事,真正深入公共仓库、亲手接触代码又是另一回事。仓库是开放的,源代码在 GitHub 上公开,任何人都可以将项目克隆到本地来评估架构或尝试构建测试版本。
作者们一开始就声明了开放的发布模式:引擎可以免费用于任何目的,包括商业游戏发布,不收取任何许可费用或隐藏版税。源代码公开可用,因此社区可以创建分支、扩展和拉取请求。
仓库里有什么
如果你打开 NauEnginePublic 仓库,你会立即注意到一个大型项目经典的 C++ 技术栈。这里没有尝试用自定义包管理器来重复造轮子:依赖通过 vcpkg 引入,构建通过现代 CMake presets 管理。
引擎本身使用 C++ 编写,积极依赖子模块,并需要最新的工具链:
- Visual Studio 2022 的 MSVC v143
- 当前版本的 Windows 10 SDK
- 用于构建脚本的 Python 3.10 或更高版本
- 支持 CMakePresets 的 CMake 构建系统
在当前阶段,仓库明确专注于 Windows 平台。文档描述了 Visual Studio 2022 和 Clang-CC 配合 Ninja 的预设。README 中尚未详细说明对 Linux 或 macOS 的支持,因此主要工作场景目前绑定在 Microsoft 技术栈上。
环境和依赖设置
从零开始构建游戏引擎总是需要耐心。克隆仓库后,第一件事就是拉取子模块——没有它们,项目根本无法配置:
接下来是与 vcpkg 包管理器配合工作。如果你还没有安装它,作者建议将其克隆到单独的目录,例如 c:\tools\vcpkg,然后运行初始化:
之后,你需要设置 VCPKG_ROOT 环境变量。没有这个变量,CMake 不知道去哪里找库。
顺便说一句,仓库中有一个有用的提示:如果分支中的 vcpkg.json 文件有变化,最好通过清除工作目录来进行干净构建 git clean -d -x -f。关键是事先保存所有未保存的更改,否则 git 会毫无警告地删除它们。
配置和构建过程
依赖准备就绪后,就轮到 CMake 了。项目已经配置好了现成的预设,所以你不需要手动指定几十个编译器标志。
要为 Visual Studio 2022 生成项目,请运行:
如果你更喜欢 Ninja 和 Clang 的组合,有一个替代预设:
你也可以直接在 VS Code 或 Visual Studio 中打开项目文件夹。IDE 会自动识别 CMakePresets.json 文件,并在界面中建议选择所需的配置。
编译过程本身通过 CLI 或直接从 IDE 启动:
编译完成后,你可以将引擎安装到本地目录 output:
在这个文件夹中,你将获得一个可以进一步集成的构建版本。
为什么开发者应该研究这个代码
Nau Engine 不仅对计划用它制作游戏的人有趣,对普通 C++ 程序员也是如此。
首先,这是一个全新的代码库。许多流行引擎都背负着二十年前的决策包袱。在这里你可以看到最新的 C++ 标准项目是如何组织的,模块是如何划分的,资源处理流水线是如何工作的。
其次,项目完全对贡献者开放。仓库中有开放的问题和拉取请求,社区正在逐步参与改进引擎。如果你一直在寻找一个复杂的系统级开源项目,可以在其中贡献优化或新功能,Nau Engine 提供了这个机会,而且没有专有许可的繁文缛节。
第三,这是一个很好的实验场,可以尝试自定义渲染器、物理引擎或脚本包装器。有了现成的模块化结构,可以节省数周的繁琐环境设置工作。
第四,对于游戏工作室来说,这是一个真正获得不依赖外国供应商和突然许可协议变化的技术栈的机会。
从哪里开始
如果这个项目让你感兴趣,从简单的开始:克隆仓库,按照构建指南的步骤操作,尝试在 Debug 模式下构建引擎。通读目录结构,查看源代码中基本子系统的实现,并查看 GitHub 上的 Issues 标签。对于对游戏引擎内部开发感兴趣的人来说,这是优秀的学习材料。
相关项目