Playing Diablo IV on macOS

    • macos
    • gaming
    • wine
    • crossover
    • diablo
    • diablo4
  • modified:
  • reading: 7 minutes

Diablo IV on macOS

It is incredible. You can actually play AAA games on your Mac that require DirectX12. Diablo IV is one of them. I am able to play Diablo IV on my maxed-out MacBook Pro 16" 2023 with M2 Max 96Gb of RAM.

Don’t want to get credit on that, as I have found an almost working for me solution on r/macgaming.

Prerequisites

I am running the latest macOS 14 (Sonoma), but some people mentioned that it might work on macOS Ventura as well. You need to have an Apple Silicon Mac, as it will not work on Intel-based Macs.

Install Command Line Tools for Xcode 15

Download and Install Command Line Tools from https://developer.apple.com/download/all/.

Install Rosetta 2

Rosetta 2 is allowing you to run Intel-based apps on Apple Silicon. Considering that most of the games for Windows are built for Intel (x86-64 architecture), you will need to install Rosetta 2.

Open terminal and run:

softwareupdate --install-rosetta

Install Game porting toolkit

Download it from https://developer.apple.com/download/all and run Game_porting_toolkit_1.1.dmg. It will mount a volume in "/Volumes/Game Porting Toolkit-1.1".

You can open Read Me.rtf file to read more about the Game porting toolkit and how to use it.

Switch to Intel architecture in terminal

Open terminal and run:

arch -x86_64 zsh

That will run all the following commands under Rosetta 2 with Intel architecture.

Install homebrew

Even if you already have homebrew installed on your macOS, it is probably installed for Apple Silicon. You need to install it for Intel architecture.

Homebrew is an unofficial package manager that most of the developers use to install various tools for Development, Terminals, and not only. It is very respected in the community and has a lot of packages available.

To install it, you can look at the installation manual at https://brew.sh, you need to run the following command in the terminal (here, and later I already assume that you are running it under Rosetta 2, see the previous section):

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

If you already have homebrew installed for Apple Silicon, that version is located under /opt/homebrew. The version for Intel will be installed under /usr/local. So they are not going to conflict with each other.

But you want to tell this terminal session to use /usr/local instead of /opt/homebrew. To do that, you need to modify the PATH environment variable for this terminal session. You can do that by running:

export PATH="/usr/local/bin:${PATH}"

Make sure that when you run which brew it prints /usr/local/bin/brew.

You can also check that homebrew is installed for Intel correctly by running:

brew doctor

And see if there are any permission issues. For me, I had to run the following

sudo chown -R $(whoami) /usr/local/share/zsh /usr/local/share/zsh/site-functions

If you already had homebrew installed for Intel, you might have to run brew update and brew upgrade to update.

Install game-porting-toolkit

Tap (brew terminology to add) official packages provided by Apple for homebrew

brew tap apple/apple http://github.com/apple/homebrew-apple

And install them

brew -v install apple/apple/game-porting-toolkit

If you see an error similar to one I had, that svn is missing just run brew install subversion and try again.

That command will run for a while (40 minutes on my MBP 16" 2023). It will install a lot of dependencies.

Prepare Diablo IV

I decided to keep all the games in ~/Games, so I have created a folder in my home director

mkdir ~/Games

After that I decided to keep all Battle.net games in one folder under ~/Games/battle-net.

Configure that for the current terminal session (command to tell Wine where the games are located):

Wine is a tool to run Windows apps on macOS. It is used by Crossover and Game Porting Toolkit provided by Apple.

export WINEPREFIX=~/Games/battle-net

Prepare the folder for Diablo IV

`brew --prefix game-porting-toolkit`/bin/wine64 winecfg

A “Wine configuration” window should appear on your screen. Change the version of Windows to Windows 10. Choose Apply and then OK to exit winecfg.

Install Game Porting Toolkit library directory into Wine’s library directory

ditto /Volumes/Game\ Porting\ Toolkit-1.1/redist/lib/ `brew --prefix game-porting-toolkit`/lib/

And copy all the required executables to /usr/local/bin, so you can access them later without attaching Game Porting Toolkit volume.

cp /Volumes/Game\ Porting\ Toolkit-1.1/gameportingtoolkit* /usr/local/bin

Update a Windows version in Wine registry to match expected build by Battle.net app

`brew --prefix game-porting-toolkit`/bin/wine64 reg add 'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion' /v CurrentBuild /t REG_SZ /d 19042 /f
`brew --prefix game-porting-toolkit`/bin/wine64 reg add 'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion' /v CurrentBuildNumber /t REG_SZ /d 19042 /f
`brew --prefix game-porting-toolkit`/bin/wineserver -k

Install Battle.net app and Diablo IV for Windows

Download Battle.net app for Windows from https://www.blizzard.com/download/.

Assuming you have it downloaded in your ~/Downloads folder, verify that Wine already has it too:

ls ~/Games/battle-net/drive_c/users/crossover/Downloads/

You should see Battle.net-Setup.exe there.

Install Battle.net app for Windows

gameportingtoolkit ~/Games/battle-net ~/Games/battle-net/drive_c/users/crossover/Downloads/Battle.net-Setup.exe

You should see Battle.Net app window on your screen. Login with your Blizzard account and install Diablo IV. After installing, you can launch the game.

By default, you will see a performance HUD, that shows you FPS, CPU, and GPU usage. You can use it to configure the game Graphics settings to get the best performance. Later we can disable them.

Diablo IV Graphics settings

I am playing on 6k external display. My resolution is set to 3072x1728 in game. To get the best performance, I have set Quality Preset to Ultra, and changed FidelityFX Super Resolution to Quality. I see about 40-50 FPS in the game.

Diablo IV Graphics settings 1

Diablo IV Graphics settings 2

Creating a shortcut to launch Diablo IV

You can always launch Diablo IV from the terminal by running

PATH="/usr/local/bin:${PATH}" arch -x86_64 /usr/local/bin/gameportingtoolkit-no-hud ~/Games/battle-net  ~/Games/battle-net/drive_c/Program\ Files\ \(x86\)/Diablo\ IV/Diablo\ IV\ Launcher.exe

Here I am using gameportingtoolkit-no-hud instead of gameportingtoolkit to disable the performance HUD.

But I found it nicer to create a shortcut to run the game without opening the terminal. To do that, you can open an Automator.app on your macOS and create a new Application. Add a Run Shell Script action and paste the following code there:

#!/bin/zsh

export PATH="/usr/local/bin:${PATH}"

(arch -x86_64 /usr/local/bin/gameportingtoolkit-no-hud ~/Games/battle-net  ~/Games/battle-net/drive_c/Program\ Files\ \(x86\)/Diablo\ IV/Diablo\ IV\ Launcher.exe) || true

Automator.app

Save the application to ~/Applications/Diablo IV.app (create the folder ~/Applications if it doesn’t exist).

Download a Diablo IV image for example from Diablo IV Official Website.

In Finder go to the folder where you save Diablo IV.app, select it and Open Get Info (⌘I). Drag and drop the image to the top left corner of the window. It should replace the default icon.

Diablo IV.app

Now you can launch Diablo IV from the Applications folder.

Diablo IV.app

How to upgrade Game Porting Toolkit

At this point, we assume that you have already installed Game Porting Toolkit 1.1 using this guide.

Make sure to download the latest Xcode 15, Command Line Tools for Xcode 15, and macOS 14.

After that download the latest Game_porting_toolkit_X.XX.dmg from https://developer.apple.com/download/all and run downloaded Game_porting_toolkit_1.1.dmg. It will mount a volume in "/Volumes/Game Porting Toolkit-1.1".

Open terminal.

Update/install Rosetta

softwareupdate --install-rosetta

Switch to the x86_64 architecture

arch -x86_64 zsh

Point to the x86_64 version of Homebrew

export PATH="/usr/local/bin:${PATH}"

And run the following commands (this command will take a long time to finish):

brew update
brew upgrade

Now copy all the required executables and libraries to /usr/local/bin.

ditto /Volumes/Game\ Porting\ Toolkit-1.1/redist/lib/ `brew --prefix game-porting-toolkit`/lib/
cp /Volumes/Game\ Porting\ Toolkit-1.1/gameportingtoolkit* /usr/local/bin

At this point, you should be able to launch Diablo/Battle.net using that Automator shortcut we created earlier.

Having issues?

If you have any questions, the best place to ask questions is r/macgaming. You can reach out to me, but CrossOver and Wine is new to me too. I am just sharing my experience.

Troubleshooting and known issues

Battle.net app is asking for an update

If you see a message, that Battle.net app needs to be updated. At the current moment, you can still play Diablo IV without updating. Do not try to update Battle.net app, as it will not finish successfully and probably froze during the update.

If you already started the process of updating, you will have to kill the wine processes in your Activity Monitor. To do that, open Activity Monitor, search for wine and kill all the processes.

Removing HUD (performance overlay)

During this guide I have used gameportingtoolkit to install the game, and later switched to gameportingtoolkit-no-hud to disable the performance overlay. Both of the binaries are available in the mounted volume of Game Porting Toolkit. And during this guide I have copied both of them to /usr/local/bin.


If you want to suggest a change or update this guide, you can open a pull request to this repository.

See Also