Somehow the news of Apple’s Game Porting Toolkit flew under this author’s radar when macOS Sonoma was announced at WWDC earlier this month. It wasn’t until the developer sessions on using the kit and bringing games to the macOS platform that it really became apparent what Apple was doing. Running DirectX 12 games on Apple Silicon Macs had been a pipe dream since release, but its time might soon be upon us. All of the right pieces are falling into place, and one real test of this platform is a brand-new game. In this case, that game is Diablo IV.
Part of the macOS 14 Sonoma developer beta includes new versions of all of Apple’s development tools, including its Xcode integrated development environment and its command-line tools. An add-on for the command line includes the Game Porting Toolkit. Note that you do need to have a developer account with Apple to get any of this software right now, but this fall Sonoma will release to the public and these tools should be available to all. The GPTK’s installation archive includes a pretty thorough readme file, which we’ll use to get up and running.
What Is Apple’s Game Porting Toolkit And How Useful Is It?
As it turns out, Apple has partnered with Codeweavers to help make gaming on the Mac happen. Crossover is a commercial application with open-source underpinnings, and it’s been available almost since the start of Apple’s transition from PowerPC chips to Intel CPUs way back in 2006. It’s built on Wine, an open-source compatibility layer that can run Windows applications on a whole host of systems including Linux, FreeBSD, and macOS. Codeweavers announced at WWDC that Crossover will get DirectX 12 this year, but it already supports a pretty wide array of DirectX, OpenGL, and Vulkan titles on both x86 and Arm64 Macs.
This might sound familiar to HotHardware readers, though. Everybody who wants to play PC games on a platform other than Windows are no doubt familiar with Valve’s efforts drive gaming on Linux, the recently-updated Proton (which, incidentally, Codeweavers says it also had a hand in). It’s featured prominently as part of the Steam Deck and its Arch Linux-based operating system. Apple and Valve are racing in the same direction: bring PC gaming to other platforms. The Steam Deck got there first in 2022. While the handheld is no slouch in most games and a good seller for Valve, Apple has about 50 million Apple Silicon Macs in the wild according to Statista. That’s a pretty large demographic for Apple to target.
Apple’s Software Development Toolkit is actually a command-line version of Crossover. Little details all throughout the setup and usage experience give that fact away, right down to the default user in a container being named “crossover”. Be warned: we’ll be dropping into the command line to do almost all of this. Codeweavers will add its snazzy UI and bundle everything up as a self-contained $75 package when Sonoma ships later this year. The Game Development Toolkit only runs on Apple Silicon Macs, but Crossover will also support x86 Macs.
Installing The Apple Game Porting Toolkit
Note that right now it only runs on the macOS Sonoma Developer Beta, which was released at WWDC. The Game Porting Toolkit is available for download from the account portal on Apple’s Developer website. After logging in, just navigate to Software Downloads, head to the More tab on the right, and search for Game Porting Toolkit. It should appear at the top of the search results. It’s about a 50 MB download. Once it’s downloaded, double-click the .dmg file to mount it, and let’s take a look at the readme.rtf file.
It contains a whole lot of instructions for setting up development using Homebrew, the third-party package manager for macOS and Linux. While we won’t reproduce the entire readme file here, the flow is pretty straightforward:
- Install Rosetta with Apple’s software update command line tool
- Install the x86-64 version of Homebrew. The whole toolkit requires running x86 native apps with Rosetta, so we need that version specifically.
- Add Apple’s GitHub “tap” for Homebrew with its recipe to set up the GPTK.
- Install the Game Porting Toolkit through Homebrew. It will use the mounted .dmg you downloaded earlier.
- Create a Wine prefix. This is a directory with Wine and where all games will be installed. Apple’s readme creates it in the user’s Home folder, but it can be created anywhere, including removable storage.
- Copy the required toolkit files from the .dmg into the Wine prefix
That install through Homebrew step (step #4 above) will take a while. It downloads everything it needs and compiles the entire toolkit from source, running tests along the way to make sure everything has been completed successfully. The M2 Pro MacBook Pro needed about 45 minutes to make it happen. With any luck, Homebrew will notify you that we’re ready to move on.
Installing Diablo IV On A MacBook? Yes You Can
To get Diablo IV going on the Mac, we’ll head over to Blizzard’s website and download the Battle.net client for Windows. It’ll download the Mac version by default, but there’s a shortcut to grab the Windows client on the download screen. Once you have it, and assuming it’s still in the Downloads folder, the Game Porting Toolkit can install it.
Running the installer is just a matter of telling the Mac to use x86-64 with the arch command, then running the installed gameportingtoolkit command line utility with the Wine prefix and the installer file as parameters. Amazingly but perhaps unsurprisingly, this just works as intended. Battle.net gets installed to the Wine prefix’s drive_c folder and the Battle.net application starts up.
From there we can install anything that’s available on the platform. I picked Diablo II Resurrected, Diablo III, the incredibly hot-selling Diablo IV (of course), StarCraft Remastered, and StarCraft II. An hour or so later after everything was installed, it was time to fire up Diablo IV, where I was greeted with this sad warning:
Anybody with past Wine experience knows you can configure the version of Windows, but the toolkit does that automatically. The problem is that by default Crossover emulates Windows 10 build 1809, not 1909. This is stored in the registry, however, and that’s also easy enough to fix. Under HKEY_LOCAL_MACHINE, we can drill down through Software > Microsoft > Windows NT > Current Version and edit the offending registry keys. These are outlined in the screenshot below. To run regedit, it’s just like installing Battle.net but instead pointing it to the location of the regedit.exe inside the Wine prefix.
I’m not really sure if it’s CurrentBuildNumber or CurrentBuild that Battle.net looks at to figure out what version of Windows is running, so we’ll just change them both and hope for the best. And fortunately, the best is what we got. The next time I clicked the big Play button in Battle.net, the game started and I could log in.
Here’s Diablo IV Running On macOS Sonoma
You can see from the FPS counter in the bottom-left that, at least in town, the game runs at around 70 fps. Our MacBook Pro has the full-sized M2 Pro processor with 12 CPU cores and 19 GPU cores with 16 GB of memory. The settings required for that are a resolution of 2304 x 1296, FidelityFX Super Resolution set in-game to Quality, and the Medium settings preset. Ultra settings are more-or-less playable, with the average frame rate hovering around 40, but there are some big dips. Presumably the combination of x86 emulation via Rosetta and DirectX 12 emulation via the GPTK are enough to bring the hurt to the system.
At this point, we should note that if you need to quit Battle.net or restart the Mac, you don’t need to re-install Battle.net or anything. Pointing the gameportingtoolkit command line tool to ‘C:Program Files (x86)Diablo IVDiablo IV Launcher.exe’ will start the Wine prefix and Battle.net, and you can launch the game from there.
Once you’re in the game, it’s pretty easy to forget that you’re playing on a Mac and not a native PC. Input is responsive, the game runs at full screen, and moving the mouse to a corner doesn’t invoke any of the macOS Hot Corners introduced in macOS Ventura.
Diablo IV Performance On The Mac: Not Too Shabby
We’ve got about three hours or so of Diablo IV in the books on the macOS Sonoma beta, and performance seems relatively steady. There are dips and the occasional brief stutter, though. The game is brand new, so no spoilers, but one boss fight we played had the frame rate down between 60-65 fps at different points, though it wasn’t especially rough. That’s not a huge dip from 70 fps in town, at least.
The thing about performance, though, is that compared to even lower-end graphics cards, the Mac lags behind. This isn’t a cure-all for the lack of games on macOS. Our test resolution is an odd one, but it’s a factor of how macOS scales on high-DPI displays. The “effective resolution” on our Gigabyte M28U is that 2396 x 1204, but FSR on the Quality preset brings that down closer to 1080p. Based on user tests around the web, Diablo IV runs about half as fast on the M2 Pro MacBook Pro as a system using a Radeon RX 6600 XT for graphics.
Our working theory here is that the x86-to-Arm64 translation is what’s slowing it down. With the render resolution set to 50% in game, or with FSR set to Ultra Performance, the frame rate didn’t budge. That’s a rendering resolution of 1202 x 648 for the game and our system, and it would not run any faster. Meanwhile, other Mac gamers with M2 Max notebooks seem to be getting similar performance. If half the resolution and twice the GPU resources don’t budge the speed of the game, we have no choice but to look at the CPU.
Other Mac Games?
No doubt early adopters are going to be eager to get their game on, but we urge caution. For one, it requires running a beta version of macOS. If you rely on your Mac to build apps for iOS or iPadOS, the current version of Xcode 14.3 is unsupported on Sonoma, and Apple doesn’t allow builds signed with the Xcode 15 beta to be distributed on its storefront, so I’ll be restoring a Time Machine beta as soon as I’m done writing. For two, compatibility isn’t quite at a great spot just yet. For example, installing Steam works well enough, but logging in took multiple tries to get something other than a blank screen. And once I was logged in, Steam crashed around 75% of the time without even having the opportunity to install or run a game.
Out of the other Battle.net games I installed, the only one that refused to run is StarCraft II. Diablo III and StarCraft Remastered both seem to actually run better as ported Windows applications than their Mac-native versions on Apple Silicon hardware. With max settings at that same 2304 x 1296 resolution, Diablo III ran at a solid 60+ fps. StarCraft Remastered is free of the mouse issues that plague the Mac version on Apple Silicon, and its in-game frame rate counter was pegged at our display’s native 144 Hz. Diablo II Resurrected runs with max settings at over 60 frames per second as well. These are all older games, so there’s not really any reason they shouldn’t run, but it’s nice to see that something works.
Other Mac users have been getting alternative storefronts up and running, too. The AppleGamingWiki website has instructions for using the Homebrew package Heroic to install Epic and GOG games for Windows for use with the Game Porting Toolkit.
Codeweavers will surely move more copies of Crossover as game compatibility improves with DX12
A Lot Of Promise But A Long Road Ahead For Mac Gaming
The whole purpose of the Game Porting Toolkit is to draw developers to release their games for the Mac platform. It remains to be seen if that’s actually going to happen. Apple has courted developers for a couple of years now, and last year’s Resident Evil Village is something of a triumph in that Capcom proved a triple-A game can launch on the platform. But nobody else has done it since. Will this toolkit make things any different?
One group is sure to benefit from this, however, and that’s Codeweavers. The company finally has a working DirectX 12 implementation, as demonstrated by Diablo IV running in the Game Porting Toolkit. Mac users will benefit from that, as well, as a wider variety of new games should become playable on the platform as the software translation layers improve. But performance will be handicapped until developers choose to target Arm and macOS natively, and that’s a big question mark that we’ll continue to have until it happens.