【免费下载链接】Sunrise
Destiny 2 Offline Preservation Mod
Sunrise 是一个让《Destiny 2》可以离线游玩的开源 Mod,支持加载任意目的地、脚本化任务、飞行/穿墙等探索功能以及持久存档。本教程带你从零开始,在 Windows 上用 MSBuild 构建、在 Linux 上用 xwin 交叉编译 Sunrise,覆盖环境准备、完整编译命令和常见问题排查,帮助新手一次性构建成功。
Sunrise 是什么?项目代码结构一览
Sunrise 以 DLL 形式注入游戏进程运行,入口是 Sunrise/src/dllmain.cpp。整体代码分为三大块:
| 模块 | 路径 | 职责 |
|---|---|---|
| 客户端 | Sunrise/src/client/ | 钩子、UI(ImGui)、内容解析、场景注入 |
| 服务端 | Sunrise/src/server/ | 本地模拟的游戏服务端逻辑、活动调度 |
| 中间件 | Sunrise/src/middleware/ | 加密、协议编解码、BAP 帧处理 |
💡 项目声明所有游戏数据均在运行时提取,仓库内不包含任何游戏资源,这也是它可以直接开源编译的原因。
编译前准备:环境与工具链清单
两条路线共用的硬性要求(见 CMakeLists.txt 第 1 行的最低版本声明):
- CMake3.31+(
cmake_minimum_required(VERSION 3.31)) - 代码为C++20
- 目标系统:x64 Windows
Windows 路线
- Visual Studio 2026,安装Desktop development with C++工作负载
- 确认勾选v145 工具集和10.0.26100 Windows SDK(安装器里要同时选中这两项)
Linux 路线
安装以下工具(Debian/Ubuntu 用apt install,Fedora 用dnf即可):
git cmake clang ninja llvm xwin⚠️ Linux 交叉编译走的是 clang-cl + lld 工具链,不需要安装完整的 MSVC,只需要 xwin 提供的 Windows 头文件和库。
Windows 一键构建:MSBuild 最快配置方法
第 1 步:克隆仓库
git clone https://gitcode.com/gh_mirrors/sunrise16/Sunrise cd Sunrise第 2 步:图形界面构建(最简单)
直接用 Visual Studio 打开 Sunrise/Sunrise.sln,选择Release + x64配置,点击生成即可。
第 3 步:命令行构建(适合 CI/脚本)
打开Developer PowerShell for VS 2026,执行:
msbuild Sunrise.sln /m /p:Configuration=Release /p:Platform=x64参数说明:
/m:多核并行编译,大幅缩短构建时间/p:Configuration=Release:发布配置/p:Platform=x64:64 位平台
Linux 三步交叉编译:xwin 工具链完整指南
Linux 编译的核心思路:用 linux-to-win-toolchain.cmake 指定clang-cl编译器、lld-link链接器,并指向 xwin 缓存的 Windows SDK,从而在 Linux 上产出 Windows 可执行的 DLL。
第 1 步:下载 Windows 头文件
xwin --sdk-version 10.0.26100 --accept-license splat --include-debug-libs --output .xwin-cache这会创建一个.xwin-cache目录,内含 Windows SDK(10.0.26100)与 UCRT 运行时库,后续构建全部从该目录取用。
第 2 步:CMake 配置
cmake -B build -G Ninja -DCMAKE_TOOLCHAIN_FILE=$(pwd)/linux-to-win-toolchain.cmake -DCMAKE_BUILD_TYPE=Release第 3 步:执行构建
cmake --build build构建完成后,产物位于build/x64/Release/目录。
构建产物说明:最终得到什么文件
无论哪条路线,最终产物都是一个名为steam_api64.dll的共享库——CMake 中它被定义为 SHARED 目标(CMakeLists.txt 第 35–39 行),嵌入的 SQLite、Lua、资源脚本等一并打包其中(资源清单见 Sunrise/resources/sunrise.rc)。
将steam_api64.dll安装到旧版本游戏客户端即可离线游玩。详细的安装与玩法说明可参考仓库 README.md 的 Building 章节(README.md#L43-L85)。
常见问题 FAQ:编译失败怎么办
Q1:CMake 报错版本过低?Linux 发行版自带的 CMake 常为 3.2x,请升级到 3.31+,或从 CMake 官方获取新版二进制。
Q2:Windows 下提示找不到 v145 工具集或 SDK 10.0.26100?回安装器确认 "Desktop development with C++" 工作负载中,C++ CMake tools之外还需手动勾选 v145 工具集与对应 SDK 版本。
Q3:Linux 构建找不到.xwin-cache?工具链文件写死缓存路径为仓库根目录下的.xwin-cache(linux-to-win-toolchain.cmake 第 10 行),确认 xwin 命令的--output参数与之一致,且在仓库根目录执行 cmake。
Q4:交叉编译后 DLL 在 Windows 上报缺少 VC 运行时?项目使用静态运行时链接(/MT,见 CMakeLists.txt 第 41–43 行),正常情况下无需安装 VC 运行时;若用 Debug 配置则需带 Debug 的运行时。
总结
- Windows 用户:装好 VS 2026(v145 + SDK 10.0.26100),一条
msbuild命令搞定 - Linux 用户:xwin 拉取 SDK → CMake 配置 → Ninja 构建,三步完成交叉编译
- 两条路线产出相同的
steam_api64.dll,功能完全一致
现在你已经掌握了 Sunrise 从零编译的完整流程,接下来就可以深入 Sunrise/src/client/content/ 的 Activity SDK 源码,尝试为这个离线 Mod 添加属于自己的功能了 🚀
【免费下载链接】Sunrise
Destiny 2 Offline Preservation Mod
相关推荐
cargo-xwin:简化Windows目标平台的交叉编译
cargo xwin:简化Windows目标平台的交叉编译 在软件开发领域,交叉编译是一个常见的需求,尤其是当项目需要在不同的操作系统或硬件平台上运行时。针对使
开发工具Wasmtime 预编译与交叉编译:AOT 编译 WebAssembly 程序的完整实战指南
Wasmtime 预编译与交叉编译:AOT 编译 WebAssembly 程序的完整实战指南 导读 本文围绕 Wasmtime 的 Ahead of Time(
语言运行时JIT编译编译器ok-ww 实战指南:图像识别驱动的《鸣潮》后台自动化完整流程
ok ww 实战指南:图像识别驱动的《鸣潮》后台自动化完整流程 ok ww 是一款面向《鸣潮》的开源图像识别后台挂机工具:通过目标检测加 OCR 识别游戏画面,
GUI 自动化计算机视觉RPA人工智能
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考