从自己的游戏文件,到第一次开玩

D2R Mobile 完整游玩指南:从准备文件到 iPhone、iPad 与 Mac 开玩

把文件准备、构建安装、操作和存档串成一条完整路线。优先走 Mac 与 Xcode;没有 Xcode 时,也说明能做到哪里,以及哪些步骤仍未验证。

想在 iPhone 或 iPad 玩,有 Apple 芯片 Mac 和 Xcode 就优先走源码构建;想直接在这台 Mac 玩,则构建原生 Mac App。 两条路线都从你自己购买的 Switch 游戏文件开始,目标是本地离线游玩,不提供 Battle.net 多人游戏或在线角色。

本文对应 D2R Mobile v1.0.15,提交 b94670c795e28742abe1a9cadd64a234a77260ab,于 2026 年 10 月 15 日核查。SwitchToAny 阅读了发布说明、文档与构建脚本,没有构建游戏、安装这些包、做真机测试或验证存档恢复。下文的成功判据用于检查你自己的操作,不代表本站已经观察到这些结果;作者报告和未验证环节会分别标明。

1. 先选路线,再下载

你的目标与电脑条件 从哪里开始 最终得到什么
在 iPhone / iPad 玩,有 Apple 芯片 Mac 和 Xcode Mac 共用准备,再走 iOS 构建安装 已签名的 DmIOS.app,由项目脚本直接装机
在 Apple 芯片 Mac 上玩 Mac 共用准备,再走 原生 Mac 本地签名、依赖本机工作区的 Mac App
在 iPhone / iPad 玩,只有 Windows、Linux 或没有 Xcode 的 Mac 实验性壳包路线 仍需签名和安装的 output.ipa
没有电脑、想在 Intel Mac 原生运行,或必须联网多人 在这里停下 本指南没有适合这些条件的路线

这些路线均不提供游戏或密钥。仓库和发布壳只提供工具与宿主代码;从你的游戏生成的产物仅供自己使用,不应再分发。只使用你有权取得和使用的文件;拥有游戏不等于在所有地区都自动获得提取、转换或分发许可。游戏文件政策与具体要求

芯片和内存必须一起检查

  • 芯片最低 A14 / M1。 A13 及更早芯片,包括 2020 年 iPad Pro 的 A12Z,不支持这套图形层所需的 Metal 3。
  • 4 GB 内存设备不支持,即使芯片是 A14 也不行。芯片达标不能抵消内存限制。
  • A14 且至少 6 GB 内存: 固定版本的设备表中尚无玩家报告,应按实验性尝试看待,不能当成已确认兼容。
  • 内存条件合适的 A15–A16 设备: 还要制作 Legacy Device Pack。作者引用了 iPhone 14 Pro Max(A16、6 GB)和 iPhone 13 Pro Max(A15、6 GB)的玩家运行记录,不能据此认证所有机型。
  • A17 Pro 及更新芯片、M 系列 iPad: 走原生 BC 纹理路线。Apple 芯片 Mac 也不需要 Legacy Device Pack。
  • 免费账号签名的 6 / 8 GB 设备仍未验证。 作者报告该签名路线在 12 GB 设备运行;它除了没有 iCloud 同步,还会去掉部分内存相关权限。

芯片、内存、系统、纹理和签名是五个独立条件,通过一项不代表其他项也通过。设备表 · 免费账号限制

按运行设备的系统选构建

运行设备系统 源码构建开关 壳包路线
iOS / iPadOS 26 及以上 默认构建 D2RMobile-shell-build-input.zip
iOS / iPadOS 18–25 DM_IOS_M3=1 D2RMobile-shell-ios18-build-input.zip
macOS 26 及以上 默认 Mac 构建 使用原生 Mac 路线
macOS 15–25 DM_MAC_M3=1 使用原生 Mac 路线

更早的系统不在本指南范围。旧接口构建与 Legacy Device Pack 解决的是不同问题,可能需要同时使用。 例如 A16 手机运行 iOS 18,就需要两者。这里的 M3 开关指旧图形接口路线,并不是要求 M3 芯片。系统构建说明

留足空间,也留出准备时间

上游给出的数字分别是:完整 RomFS 约 8.4 GB、解包时约需 20 GB 可用空间、壳包打包工作空间约 12 GB。它们对应不同阶段,不能把其中一个当作整个流程的总需求。原始文件、生成产物和备份都要留空间;制作 Legacy Device Pack 另需约 3 GB。手机上,18 个必要资源档案合计约 5.6 GB,还要加 App、着色器缓存、存档,以及需要时约 1 GB 的 Legacy Device Pack。目前没有经过验证的“一共只需留出多少空间”数字。文件 · 打包 · 纹理包

2. 准备准确的游戏文件

你需要自己购买的 Switch《暗黑破坏神 II:狱火重生》、Reign of the Warlock 扩展,以及 1.0.34.0 更新。项目目录和工具把同一版本写作 3.3.94012。PC 版文件、没有扩展的本体或另一个 Switch 更新版本都不能替代。

上游游戏文件指南说明了如何从自己的主机导出 Update 的 ExeFS 和 RomFS。本指南从合法取得这些文件之后开始。不要下载陌生人提供的 ROM、密钥、资源包或已经包含游戏内容的 IPA。

Mac 路线按下面的目录放置。~/dm-work 是默认的数据与构建工作区,和源码目录分开:

~/dm-work/data/switch/3.3.94012/Update/
├── ExeFS/
│   ├── main
│   ├── sdk
│   └── subsdk0
└── RomFS/
    └── data/
        ├── build_manifest.psv
        └── ……自己导出的 Update 中的 .data 档案

电脑端要保留完整的 RomFS,用于生成资源。手机只需后文列出的 18 个档案;不要把这个精简的手机文件集合当作完整构建输入。

如果自己的导出结果是包含本体和正确更新的完整 .xci 或 .nsp,可以走上游提供的 hactool 解包路线。先用第 3 节的 clone 命令取得源码,再回到这里。从 hactool 官方仓库按说明构建该工具,并让它位于 PATH,然后从 D2R Mobile 源码根目录执行:

dm/tools/extract_game.sh "/path/to/your-game.xci" "/path/to/your-own/prod.keys"

把两个示例路径换成自己的真实路径;也接受 .nsp。脚本会把文件放进上述工作区并检查版本。密钥只留在你的电脑上,不要上传,也不要放进求助附件。 作者报告自己跑过 .xci 路线,并引用社区的 .nsp 结果;本站没有复现。版本检查失败时,回头核对自己的输入,不要绕过校验。解包与输入验证

3. 在 Mac 上完成共用准备

这一节同时供 iOS 和原生 Mac 构建使用。走壳包路线的读者改看第 6 节。

取得同版本源码

打开终端,进入打算放源码的目录,执行:

git clone --branch v1.0.15 --single-branch \
  https://github.com/jhaizhou-ops/d2r-mobile.git d2r-mobile-v1.0.15
cd d2r-mobile-v1.0.15
git rev-parse HEAD

成功判据: 最后一行应为 b94670c795e28742abe1a9cadd64a234a77260ab。检出发布标签时出现 detached HEAD 提示是正常现象。包含 setup.sh、dm/ 和 docs/ 的这一层就是源码根目录。不要把更新的源码和本指南的旧壳混在一起。固定源码

安装构建工具,先做只读检查

从 Apple 安装 Xcode,打开一次并完成初始化。作者记录的工具版本是 Xcode 26.6、XcodeGen 2.45.4、.NET SDK 10.0、SPIRV-Cross 1.4.357、Python 3.14。这是作者使用的版本,不表示所有更新版本都已经验证。旧系统的 Mac 仍要能运行合适的 Xcode 与工具链;降低 App 的运行系统要求,不等于让构建工具也能运行在旧系统上。上游尚未人工验证在 macOS 15 本机从源码构建旧接口 Mac App。依赖 · Mac 限制

如果使用 Homebrew,上游给出的依赖安装命令是:

brew install xcodegen dotnet spirv-cross python
xcodebuild -version
xcrun -sdk iphoneos metal --version
./setup.sh check

成功判据: 检查能找到工具,验证 main、sdk、subsdk0,找到 build_manifest.psv 和全部 18 个必要资源档案,最后报告“体检通过”或 All checks passed。准备阶段没有填写签名信息只会提示,不会阻止继续。若缺项目,按第一条缺失提示补齐,再跑一次检查。检查脚本

若已经安装 Xcode,但命令指向了其他开发工具目录,脚本对默认安装位置建议执行 sudo xcode-select -s /Applications/Xcode.app。缺少 Metal 编译器时,建议执行 xcodebuild -downloadComponent MetalToolchain。Xcode 不在默认位置时要使用实际路径;不要带着编译器检查失败继续往下走。

生成游戏专用产物

在源码根目录执行:

./setup.sh
source "$HOME/dm-work/build/cache/dm/venv/bin/activate"

第一条命令准备 Python 依赖、改写游戏程序并构建着色器库;第二条启用后续脚本需要的 Python 环境。如果设置了自己的 DM_ROOT,后续所有路径都要使用同一个工作区,不再照抄 ~/dm-work。

成功判据: setup 最后显示“工作区就绪”和下一步构建命令,中间没有失败步骤。生成了一些文件不代表整步成功。若 .NET 启动失败,检查 dotnet --list-runtimes 和脚本的具体诊断;v1.0.15 会尝试自行定位运行时。若着色器失败,先修正报错所指的依赖,再重新运行 setup;不要无差别删缓存或修改版本校验。已完成步骤可以跳过。setup 源码

setup 会改写源码里的三个工具指纹生成文件:dmsh_chain.lock、dmsh_chain.h、c1_full.tsv。这是正常的本机差异,不要提交这些改动。准备完成后,选择 iOS 或 原生 Mac。构建总览

4. 在 iPhone 或 iPad 上构建、签名和安装

4A. 填写签名配置并连接设备

  1. 在 Xcode 的 Settings → Accounts / Apple Accounts 中登录自己的 Apple 账号,选定要使用的团队。付费开发者团队可使用相应权限;免费 Personal Team 要启用下面的免费账号开关。
  2. 用数据线连接 iPhone 或 iPad,解锁,并完成 Apple 的配对和信任提示。开发签名 App 还要按 Apple 的开发者模式说明开启 Developer Mode,重启并在设备上确认。该模式会降低设备安全性,只在你接受这一取舍时启用;设置项可能需要先配对才出现。
  3. 执行 xcrun devicectl list devices,把目标设备的 Identifier 用作 DM_DEVICE。另从 Xcode 的设备详情(Devices and Simulators / Device Hub)取得设备的硬件 UDID,填入 DM_IOS_UDID。这是两个不同的标识。
  4. 在源码根目录第一次创建本机配置:
cp dm/ios/local.env.example dm/ios/local.env

用文本编辑器打开 dm/ios/local.env,填写里面已有的条目。更新时不要再次复制并覆盖已有配置。下例只说明各值的含义,不能原样粘贴:

DM_TEAM_ID=your_team_id
DM_BUNDLE_ID=your.unique.d2rmobile
DM_DEVICE=the_devicectl_identifier
DM_IOS_UDID=the_hardware_udid
DM_FREE_ACCOUNT=1

只有免费 Personal Team 才设置 DM_FREE_ACCOUNT=1;付费团队留空。Bundle ID 要用自己的唯一反域名名称,以后安装时保持一致。MINI_SSH 留空。免费账号构建时,必须填写 DM_IOS_UDID,并保持这台设备连接、解锁,自动签名才能为它生成描述文件。本机配置 · Apple 的设备签名流程

免费账号的日常代价: 每七天重新签名、安装;没有 iCloud 存档同步;没有增加内存上限、持续执行和扩展虚拟寻址等权限。作者报告免费签名在 12 GB 设备运行,6 / 8 GB 仍未验证。所以机型在其他条件上合格,也可能在这条签名路线碰到内存限制。签名限制

4B. 芯片需要时,制作 Legacy Device Pack

A17 Pro 及更新芯片、M 系列设备跳过这一节。条件合格的 A14–A16 设备,既需要自己生成的纹理包,也需要按这个包构建的 App。给 A13 或 4 GB 设备加包,并不会使其变成受支持设备。

在源码根目录、setup 创建的 Python 环境中,按文档使用的版本构建 Arm 编码器:

brew install cmake
git clone --branch 5.2.0 --depth 1 \
  https://github.com/ARM-software/astc-encoder.git astc-encoder
cmake -S astc-encoder -B astc-encoder/b \
  -DASTCENC_ISA_NEON=ON -DCMAKE_BUILD_TYPE=Release
cmake --build astc-encoder/b -j
export ASTCENC="$PWD/astc-encoder/b/Source/astcenc-neon"

R="$HOME/dm-work/data/switch/3.3.94012/Update/RomFS"
D="$HOME/dm-work/out/legacy_pack"
python3 dm/tools/astc_pack.py "$R" "$D/work" --preset thorough
python3 dm/tools/casc_overlay.py pack "$R" "$D/pack" "$D/work/repl.tsv" 0-8
python3 dm/tools/astc_pack.py finalize "$D/pack"

成功判据: $D/pack 里有 pack.json,以及 Legacy Device Pack 文件夹;该文件夹内有 manifest.json 和 data/00-00000008.data。任何生成步骤失败,都先停在该步骤。构建 App 和拷到手机的必须是同一个包;重新生成纹理包后,要重新构建 App。上游纹理包流程 · Arm 编码器版本

4C. 按组合构建

从源码根目录进入 dm/ios,然后只选下面一条对应的 build 命令。免费或付费账号选项已经写在 local.env:

cd dm/ios

# iOS 26 及以上,原生 BC 纹理
./run.sh build

# iOS 18–25,原生 BC 纹理
DM_IOS_M3=1 ./run.sh build

# iOS 26 及以上,需要 Legacy Device Pack
DM_ASTC_PACK="$HOME/dm-work/out/legacy_pack/pack" ./run.sh build

# iOS 18–25,需要 Legacy Device Pack
DM_IOS_M3=1 DM_ASTC_PACK="$HOME/dm-work/out/legacy_pack/pack" ./run.sh build

成功判据: 脚本显示“构建完成”,默认产物位于:

~/dm-work/run/ios/dd/Build/Products/Release-iphoneos/DmIOS.app

build 会编译和签名,不会安装到设备。失败时查看 ~/dm-work/run/ios/build.log。若提示 no devices from which to generate a provisioning profile,重查设备连接与解锁状态、免费账号开关和硬件 UDID。若是 entitlement 权限错误,先确认没有用免费团队签付费账号配置。保留实际错误,不要随意删权限来碰运气。构建脚本 · 旧系统开关

4D. 安装刚构建的 App

仍在 dm/ios,保持手机连接,执行:

./run.sh install

成功判据: 脚本显示“装机完成”,设备上出现 App 图标。失败则看 ~/dm-work/run/ios/install.log,核对 DM_DEVICE、配对、锁屏状态和剩余空间。安装成功不等于已经能进入游戏。

免费账号按项目说明,在首次打开前到“设置 → 通用 → VPN 与设备管理”信任自己的开发者身份。图标打不开时,先检查信任和开发者模式,再考虑游戏文件。正常打开 App,尚未执行第 7 节时,看到缺少资源的页面是预期情况。安装与本机配置说明

5. 构建并打开原生 Mac App

完成 Mac 共用准备后,在源码根目录和 setup 的 Python 环境中,按系统选择一条:

# macOS 26 及以上
dm/tools/mac_app.sh

# macOS 15–25
DM_MAC_M3=1 dm/tools/mac_app.sh

成功判据: 在 ~/dm-work/out/macapp/ 找到对应的 D2R Mobile.app 或 D2R Mobile M3.app。旧接口版本还会把专用着色器库生成到输出目录。两者都是本地 ad-hoc 临时签名,不需要开发者账号或登记设备。

双击与你系统匹配的 App。首次资源选择窗口中,选择:

~/dm-work/data/switch/3.3.94012/Update/RomFS

这一层里面应有 data/。选错被拒绝时,核对目录层级与输入完整性再重选。Apple 芯片 Mac 不需要 Legacy Device Pack。

不要移动或删除工作区及输出目录。 小体积的 .app 记录了本机生成程序、覆盖层和着色器的位置。单独把 App 拷到另一台 Mac,或删掉 ~/dm-work,都不能得到完整可运行的便携安装。原生 Mac 构建与启动

创建第一个角色需要的 Mac 操作

文档中的界面沿用 Switch 手柄布局,使用键盘时显示键位提示:

操作 按键或输入
移动 W A S D;方向键用于方向选择
确认 / 返回 Space 或 J / Esc 或 K
菜单 / 新建角色 =
进入游戏 / 随页面变化的确认 Return
地图 Tab
其他手柄键 U / I 对应 X / Y;Q / E 对应 L / R;Z / C 对应 ZL / ZR;F / G 对应摇杆按下
全屏 / 退出 Control-Command-F / Command-Q

创建角色: = → 方向键选职业 → Return → Return 或 Space 确认模式 → Return 打开名字输入 → 输入后 Return → 再按 Return 创建。然后选中角色进入游戏。先用一个不重要的非专家角色验证存档,再投入长期进度。

鼠标可选择菜单、点击空地移动、点击怪物使用主攻击、与对象互动,以及双击或拖动物品。右键是返回,不是 PC 版的第二技能。连接手柄后按键会切换提示。修改语言使用 Options → Custom → 语言 → Accept All,再重启。

证据边界: 上游的键盘、鼠标、退出和手柄检查主要是无人值守模拟,明确尚未完成人工操作键盘、实体手柄及资源选择窗口的检查。点击移动只在营地核过,不代表所有地形。Mac mini M4 / macOS 15.7 的玩家报告使用的是别处构建的 App。这些是可照着尝试的文档步骤,不是本站真人体验评测。完整键位与限制

6. 没有 Xcode:先产出 IPA,再解决签名

这是实验性备选路线。 作者报告在 Windows 11 / Python 3.12 上打包,随后在 Mac 签名并在 iPhone 进入游戏。从零安装 Windows 依赖、Linux 打包,以及用 AltStore、Sideloadly 等工具签名安装,仍未验证。不要把“Windows 打包成功”理解成已经验证了纯 Windows 全流程。如果你需要某个侧载工具已经跑通的完整教程,请在这条证据边界停下。完整运行报告

选对官方构建原料

从 v1.0.15 发布页下载并解压 Source code (zip),或者使用第 3 节中固定发布标签的 clone 命令,再选择同版壳:

壳 ZIP 不是最终 IPA,不要改扩展名直接安装。 它没有游戏程序、生成覆盖层和着色器,需要打包工具从你自己的文件补齐。即使改写器仍标为 r44,源码和壳也必须来自同一发布版本。发布打包规则

准备打包依赖

上游要求 Python 3.9 及以上、pillow numpy lz4 capstone unicorn、clang、.NET SDK,以及 SPIRV-Cross 1.4.357.0,不能随便换成当前最新 SPIRV-Cross。工具请从官方 Python、LLVM、.NET、SPIRV-Cross 来源获取。打包器启动时会检查缺项。建议使用独立 Python 虚拟环境;在其中安装:

python -m pip install pillow numpy lz4 capstone unicorn

如果你电脑上的 Python 3 命令是 python3,相应替换。Windows 上,上游使用 Git、CMake、Ninja 和 LLVM 构建固定版本 SPIRV-Cross:

git clone --branch vulkan-sdk-1.4.357.0 --depth 1 https://github.com/KhronosGroup/SPIRV-Cross
cmake -S SPIRV-Cross -B SPIRV-Cross/build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=clang++ -DSPIRV_CROSS_ENABLE_TESTS=OFF
cmake --build SPIRV-Cross/build --target spirv-cross

把生成的 spirv-cross.exe 所在目录加入命令搜索路径。上游没有验证干净 Windows 从零安装依赖;上述任一步失败,应先解决对应工具,再尝试打包。打包依赖

用自己的文件生成安装包

在对应版本的 D2R 源码根目录,确保依赖可用后执行:

python dm/tools/d2rm_pack.py "/path/to/D2RMobile-shell-build-input.zip" "/path/to/Update" "/path/to/output.ipa"

全部路径换成你电脑上的真实路径;iOS 18–25 要换成对应壳。中间的输入目录必须直接含有 ExeFS/ 和 RomFS/。macOS / Linux 需要时把命令换为 python3。

符合条件的旧芯片,还要从 Arm 官方发布选择与你电脑匹配的编码器。Windows x64 可用提供的 astcenc-avx2.exe。在 D2R 源码根目录运行下面三条命令,把每个引号内的路径换成真实本机路径;PowerShell 中使用 Windows 路径:

python dm/tools/astc_pack.py "/path/to/Update/RomFS" "/path/to/legacy/work" --astcenc "/path/to/astcenc" --preset thorough
python dm/tools/casc_overlay.py pack "/path/to/Update/RomFS" "/path/to/legacy/pack" "/path/to/legacy/work/repl.tsv" 0-8
python dm/tools/astc_pack.py finalize "/path/to/legacy/pack"

打包前,把 D2RM_ASTC_PACK 设置为生成的 pack 目录完整路径。PowerShell 写作 $env:D2RM_ASTC_PACK = 'C:\path\to\legacy\pack';Mac / Linux shell 写作 export D2RM_ASTC_PACK="/path/to/legacy/pack"。注意多出来的 M:源码构建是 DM_ASTC_PACK,打包器是 D2RM_ASTC_PACK。先确认 pack.json 和完整的 Legacy Device Pack 子目录已经生成,再打包。

成功判据: 打包器完成内容检查并写出你的 output.ipa(上游估计约 130 MB);加入旧设备支持时,应有相应提示。着色器摘要不一致时,检查固定工具链、源码和壳的配对,不要禁用校验。缺少 dm/derived.tsv 或游戏程序文件,说明打包未完成。生成的 IPA 含有游戏内容,不要分享给他人。打包流程

签名与首次启动

交给签名工具的是刚生成的 IPA。上游描述了使用侧载工具和自己 Apple 账号的方法,也明确表示尚未验证这一步。请遵循所选工具的官方说明和限制;本指南不承诺它保留所需权限。不要把凭据交给陌生人,也不要把安装他人描述文件当作捷径。免费签名仍需续签,也没有 iCloud 存档。

成功安装后,继续导入资源。没有 Apple 着色器编译器的电脑产出的包,还会在首次启动时出现一次着色器准备页。作者在一台 iPhone 17 Pro Max 上测得约七分钟,不能当作所有设备的耗时。保持设备散热,让进度结束;重新进入时可能重新计数,但已缓存的工作会快速跳过。系统更新、重新安装或清除缓存后可能再跑一次。完整 Xcode 构建,以及在 Apple 编译器可用时运行的打包器,会在电脑上预编译库,不需要此首次启动步骤。着色器准备与签名限制

7. 把 18 个资源档案放进 iPhone 或 iPad

安装好的 App 不包含大体积游戏资源。从自己的 RomFS/data 取出下面 18 个文件,放在一个文件夹里,例如 Game Resources:

00-00000001.data  00-00000002.data  00-00000003.data
00-00000004.data  00-00000005.data  00-00000006.data
01-00000001.data  01-00000002.data
02-00000001.data  02-00000002.data
03-00000001.data  03-00000002.data
04-00000001.data  04-00000002.data
05-00000001.data  05-00000002.data
17-00000001.data  17-00000002.data

任选一种拷贝方法:

  1. Mac 的 Finder: 连接并解锁设备 → 在 Finder 选中设备 →“文件”→ 把文件夹拖到 D2R Mobile 上。
  2. 设备上的“文件”App: 把文件夹复制到“我的 iPhone / 我的 iPad → D2R Mobile”。仅放在“下载”或 iCloud Drive 里不够,必须位于该 App 自己的文件夹内。

需要 Legacy Device Pack 时,把完整的 Legacy Device Pack 文件夹一起拷入,与 Game Resources 同级。保留其中的 manifest.json 和 data 子目录。这个包是对 18 个原始档案的补充,不能代替它们。

回到 App,点击 Retry / 重试。成功判据: 全部 18 个档案通过存在性与大小检查,资源提示页消失。列出缺文件就补齐,再重试;若提示大小不对,从正确的原始文件重新拷贝,不要把另一个文件改名凑数。手机不需要 prod.keys、ExeFS 或 build manifest。准确文件清单与复制方式 · 校验及另一种 USB 命令

8. 第一次游玩,也要检查保存和重开

进入主菜单后,先建一个新的非专家测试角色,再导入重要进度。触屏上点新建角色,选择职业与模式,使用系统键盘输入名字并确认;Mac 使用上面的按键顺序。D2R Mobile 增加了自己的可选模式和便利功能,请先看 Options → Custom,不要默认所有设置都等同未修改的原版。

先学会最必要的操作

  • 触屏: 用左侧虚拟摇杆移动。固定版本的触屏实现中,点空地不会移动角色;Mac 鼠标的点击移动是另一条路径。按技能施放,长按连续施放,拖动技能按钮瞄准。点 NPC、物品互动;点物品查看,双击装备或使用,拖动移动。
  • 手柄: 先通过设备正常的手柄配对流程连接,再按一个按键切换为手柄提示。触碰屏幕返回触屏模式。按屏幕提示操作,映射沿用 Switch 布局。
  • Mac: 用 W A S D、显示的技能键或文档中的鼠标操作。右键是返回。先验证营地里的基础互动,再尝试复杂地形和实体手柄,因为这些环节上游人工证据有限。

这些来自文档与源码,不是本站亲测记录。总览 README 写到了点地移动,但固定版本的触屏实现和世界输入源码明确把空地移动留给 Mac 鼠标;iOS 按摇杆说明操作。手柄说明 · Mac 说明

把整个流程走一遍

  1. 进入营地,确认能移动、有声音、能开关物品栏,并能使用已装备技能或与 NPC 互动。
  2. 在测试角色上做一个容易辨认的小改动,例如调整物品栏摆放,记下预期应该保留的变化。
  3. 使用游戏里的保存退出操作回到选角,等它完成后再关闭 App。
  4. 等保存退出完成、回到选角后,完整关闭 App:iOS 从多任务切换界面移除该 App,Mac 用 Command-Q。再从图标启动,选同一角色进入游戏。只切到后台再切回来不算重新启动检查;保存或读取转换过程中不要关闭。
  5. 确认角色和预期进度仍在,然后再开始长时间游玩,或考虑导入存档副本。

这是一组建议你在自己设备上执行的验收步骤,不是本站已经完成的测试。分别记录构建 → 安装 → 菜单 → 游戏内 → 保存 → 重开。主菜单截图不能证明后面的步骤,短时检查也不能证明长时间稳定性。

作者报告 v1.0.15 修复了暂停状态切出时无法保存的问题。Mac 退出路径最多等三秒保存,未完成就会在日志里记录未存盘退出。后台保存不能替代备份,强制终止也不应是日常退出方式。 测试发现进度丢失时,先停止使用重要存档,并保留日志。保存修复 · Mac 退出行为

9. 备份、更新与续签

先知道存档在哪里

安装方式 存档目录
iPhone / iPad “文件”→ 我的 iPhone / iPad → D2R Mobile → save
默认原生 Mac App ~/Library/Application Support/D2R Mobile/save
旧接口原生 Mac App ~/Library/Application Support/D2R Mobile M3/save

退出游戏后,备份整个 save 文件夹。 里面包括角色目录、共享仓库文件、Settings 和项目新增玩法的进度。单独一个 .d2s 不算完整备份。Custom 页的部分开关是设备本地配置,不会随整个文件夹一起带走。存档结构

iOS 上用“文件”或 Finder 把整个文件夹复制到你控制的独立位置,最好在 Mac 上再留一份。仅在同一个 App 内多放一个文件夹,不能防止卸载 App 造成丢失。Mac 上则把 save 复制到实时存档目录以外、带日期的备份目录。打开备份核对角色目录和其他文件确实存在,避免空文件夹或多一层 save/save/。确认副本前不要动原件。

每次更新或免费账号续签前

  1. 正常保存退出,关闭游戏,再做上述独立备份。
  2. 记下源码版本、Bundle ID、签名团队、系统分支和纹理包选择。
  3. Xcode 路线: 取得新版本源码,重新运行 ./setup.sh,激活它的 Python 环境,带上原来的签名配置和必要开关构建,再用 ./run.sh install 安装。
  4. 壳包路线: 取得新版本的源码和配套壳,重新运行 d2rm_pack.py,签名新生成的 IPA。r44 没变不代表旧壳含有新版本 App 修复。
  5. 原生 Mac: 重新跑 setup 和对应的 mac_app.sh。保留工作区;默认版与 M3 版使用不同存档目录。
  6. 打开更新后的 App,重复角色、进度和重开的检查;确认新版本可用之前,保留备份。

免费账号应在七天签名到期前,以同一身份重新构建 / 签名,并覆盖安装原来的 App。不要先卸载。 上游预期覆盖安装保留资源和存档,但本站没有测试每种签名工具的行为。如果工具要求先删 App,先停下,核对独立备份。如果签名已经过期,也应先保存仍能访问的存档,再做尝试。续签限制 · 更新规则

原始 18 个资源档案不会随每次 App 发布而变化,通常可以留在原位。重新生成的 Legacy Device Pack 需要配套 App。保持 Bundle ID 一致很重要,但不能替代备份。

可选:导入旧存档与回退

从 iPhone 导入 Mac 时,上游的办法是手工复制整个 save 文件夹。先退出两端游戏、备份两端原件,再把目标端现有 save 改成带日期的备份名,把复制来的文件夹放进对应 App 的支持目录。正确层级是 …/D2R Mobile/save/<角色目录>,不能是 …/save/save/…。使用 M3 App 时要选 D2R Mobile M3 目录。启动后核对角色和进度。

如果导入失败,先退出,把导入副本挪到一边,再把没有动过的目标端备份恢复为 save。不要盲目合并文件夹或覆盖唯一原件。旁边的 save.work / save.new 临时目录不要手工处理,上游说明 App 会重建它们。

证据边界: 作者报告过一次无人值守 Mac 运行,加载了预先放好的存档。真正从手机“文件”拷到 Mac、反方向迁移,以及专家角色,都没有完整人工验证。复制会产生两条独立进度,不是持续同步。不要拿唯一的重要角色第一次试验。导入流程与限制

iCloud 范围更窄: iOS 需要付费开发者签名与 iCloud 权限;免费账号包和本地构建的 Mac App 没有 iCloud 存档同步。保留下来的共享仓库冲突副本,也不代表已经自动合并回游戏。即使开了同步,仍应留独立备份。签名要求 · v1.0.13 的冲突处理说明

10. 卡住时,回到具体失败的阶段

症状 先检查什么,再做什么
setup 提示游戏版本不同 核对 Switch 1.0.34.0 与扩展、三个 ExeFS 文件和完整 RomFS;不要绕过版本校验。
着色器翻译或 .NET 启动失败 按 setup 的具体诊断检查运行时、编译器;壳包路线尤其要核对固定 SPIRV-Cross。看到后续文件存在不代表翻译成功。
构建失败,提示描述文件 / provisioning 核对团队、DM_FREE_ACCOUNT、连接并解锁的手机、硬件 DM_IOS_UDID,查看 build.log。
安装失败,或图标打不开 查看 install.log、devicectl 的 DM_DEVICE、配对、开发者模式、开发者信任和签名有效期。
“这个安装包还不能玩”/ This Package Is Not Ready 装的是壳,或是不完整、混版本的包;用同版 v1.0.15 源码与壳重新打包,再签名安装输出 IPA。
“这台设备玩不了”/ This Device Is Not Supported 核对芯片和内存。A13/A12Z 不能靠加包或重签获得 Metal 3;4 GB 仍不支持。
One More Step for This Device App 没有配套的旧设备构建支持;源码构建加 DM_ASTC_PACK,打包器加 D2RM_ASTC_PACK。
Supplementary Pack Required,或补充包不匹配 把完整且配套的 Legacy Device Pack 放到资源旁,核对 manifest、档案和构建时使用的包。
缺少资源页 把正确的 18 个档案放进 App 自己的文件夹,补齐或重拷页面点名的文件,再重试。
清理或移动文件后 Mac App 失效 恢复原工作区 / 输出路径,或用完整输入重新构建;单独 .app 不是便携安装。
角色或存档不见了 先停止写入新进度,检查默认版 / M3 存档目录、Bundle 身份和 save/save 多层嵌套;只用副本排查,保留备份。

这些是有源码依据的检查方向,不是覆盖所有原因的修复承诺。iOS 使用暂停菜单的分享诊断日志;Mac 使用 Help → Share Log…。Mac 日志在 ~/Library/Logs/D2R Mobile/ 或 D2R Mobile M3/。iOS 如果在进入游戏前失败,可在 App 的“文件”目录查看是否有 boot.txt、boot.previous.txt。iOS 日志 · Mac 日志 · 发布版启动自检

向上游求助时,附准确型号与内存、系统、v1.0.15 提交、构建路线、签名类型、纹理包选择、最后成功的阶段和原始错误。分享前检查日志中的私人信息。不要附游戏档案、密钥、Apple 凭据或唯一存档。

这份指南核实了什么

  • 源码与文档已核查: 同版本附件、构建开关、文件路径、输入校验、文档中的操作方式,以及上文引用的源码行为。
  • 作者报告: 公开壳的打包、Mac 自动检查、有限的设备 / 玩家运行,以及具体条件下的版本修复。
  • 本站仍未实测: 所有构建、安装、手柄操作、性能和存档恢复流程。没有运行任何游戏二进制。

这条路线把操作串到了保存和重开,并在每个失败阶段给出停止点。若要了解新版本变化,以及其他项目结论各自依赖什么证据,继续看 D2R Mobile 项目现状;技术原理见为什么同为 ARM64 仍然不能直接运行。

结论有范围,来源有版本。

以下为源码核查与维护者报告,本站没有执行游戏或真机测试。展开查看每条记录的限制与原始来源。

静态源码核查v1.0.15 玩家路线、输入与恢复文档所述玩家流程

当前指南核查了 v1.0.15 的 README、GAME_FILES、DEPENDENCIES、NO_XCODE、OLDER_SYSTEMS、LEGACY_DEVICES、MAC 与 iOS README,区分源码构建、壳打包、独立资源、设备限制、本地签名、操作与存档。

边界:来源核查不等于完整真机测试。上游运行报告仅适用于其具体设备与签名条件。SwitchToAny 未构建或运行游戏,也未验证恢复存档、更新或重新签名流程。

项目版本
v1.0.15
来源修订号
b94670c795e28742abe1a9cadd64a234a77260ab
核查日
2026-10-15
本站运行观察日
未执行
D2R Mobile v1.0.15 documentation
维护者报告v1.0.15:ZIP 构建原料与启动检查版本打包与启动检查

维护者报告 ZIP 壳、不完整或混版安装包及不支持 Metal 3 设备的检查、独立线程图形翻译,以及暂停时切出保存。报告包括全新构建打包、单测、Mac 冒烟及合入前 iPhone 启动自检。

边界:ZIP 是构建原料,不能直接安装。即使仍为 r44,也须用同版源码和壳重新打包。芯片最低 A14 / M1;4 GB 内存仍不支持,重场景仍会掉帧。自签工具安装及 Linux 打包仍未验证;这些是维护者报告,不是本站设备或存档恢复测试。

项目版本
v1.0.15
来源修订号
b94670c795e28742abe1a9cadd64a234a77260ab
核查日
2026-10-14
本站运行观察日
未执行
D2R Mobile · v1.0.15 release notes
看清项目现状检查必要条件理解技术原理