DIABLO II: RESURRECTED / BUILD GUIDE

Build Diablo II: Resurrected for Mac

Prepare the tools, check the workspace, then run the app builder for your macOS version. The final section helps you recover if a stage stops.

The sequence is setup.sh check → setup.sh → mac_app.sh. Run these from the D2R Mobile source folder. The final app appears in ~/dm-work/out/macapp/.

Prepare the Mac and source

  • App target: Apple silicon with macOS 26+, or macOS 15–25 for the older-API app.
  • Build Mac: Apple silicon with full Xcode 26.6 and the Metal compiler; Xcode 26.6 requires macOS Tahoe 26.2–26.x.
  • Homebrew, XcodeGen, .NET 10 SDK, SPIRV-Cross and Python 3.
  • The supported Switch game files and expansion.
Project command-line tools
brew install xcodegen dotnet spirv-cross python
Download the project source
git clone https://github.com/jhaizhou-ops/d2r-mobile.git
cd d2r-mobile
git checkout 53e7c5b

Open Xcode once to complete its setup and install its required components before starting. Python packages are installed by setup.sh in the workspace environment.

The older-API app can run on macOS 15+, while this documented toolchain needs a newer build Mac. See Apple’s Xcode system requirements before preparing the workspace.

Put the game files in place

~/dm-work/data/switch/3.3.94012/Update/
├─ ExeFS/
│  ├─ main
│  ├─ sdk
│  └─ subsdk0
└─ RomFS/
   └─ data/
      ├─ build_manifest.psv
      └─ *.data

For a whole game package containing the supported base and update, use the project’s extractor. It needs hactool; the extractor setup instructions explain building that tool and setting HACTOOL if it is outside your PATH.

Alternative: extract your package
dm/tools/extract_game.sh "/path/to/game.nsp" "/path/to/prod.keys"

Extraction needs about 20 GB extra free space. The setup check asks for at least 30 GB before game data is present, or 15 GB once it is in place.

Check, prepare, then build

Run the read-only health check

Check prerequisites
./setup.sh check

Resolve each missing tool or game-file message before continuing.

Prepare the workspace

Prepare code, resources and shaders
./setup.sh

The preparation finishes without a failed step. Keep the first error if it stops.

Activate its Python environment

Use the workspace environment
source ~/dm-work/build/cache/dm/venv/bin/activate

Your Terminal is using the workspace environment before the app command.

Build for your system

macOS 26 or later
dm/tools/mac_app.sh
macOS 15–25 instead
DM_MAC_M3=1 dm/tools/mac_app.sh

Find D2R Mobile.app or D2R Mobile M3.app in ~/dm-work/out/macapp/.

Choose the resources on first launch

Open the app in Finder

The first launch asks for a game resource folder. Select ~/dm-work/data/switch/3.3.94012/Update or its RomFS folder. The selected folder must lead to the game’s data folder.

The folder is accepted; a wrong selection produces an explanation and lets you choose again.

Read the key reference

It appears once and is available later from Help. To change language, use Options → Custom, select the language, Accept All, then reopen the app.

The main menu appears and you can start character creation.

Keep ~/dm-work and the output directory in place. The app is locally signed; building the Mac app does not require an Apple developer account.

If a step stops

Match the message to the failed stage
What happensNext action
Missing tool or wrong game versionRun ./setup.sh check; fix the item it names, then rerun setup.
App cannot run on this macOSOn macOS 15–25, use the DM_MAC_M3=1 build.
Resource folder rejectedSelect Update or RomFS with the expected data folder, not an unrelated game installation.
Need a logHelp → Share Log… prepares a local archive containing current/previous logs and version information.

After updating project code, run ./setup.sh again before rebuilding the app. Keep a save backup before changing versions. The macOS first-open guide covers system warnings rather than game-data errors.