Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save seanellul/55b402058fd2309d4c85b02251a0d1db to your computer and use it in GitHub Desktop.

Select an option

Save seanellul/55b402058fd2309d4c85b02251a0d1db to your computer and use it in GitHub Desktop.
# Dwarf Fortress Premium on Mac (Apple Silicon) — Full Setup Guide
**Tested on:** MacBook Pro M1 Pro, macOS Tahoe 26.3, GPTK 3.0
**Last updated:** March 2026
**Result:** Full game with audio, world generation, and gameplay working
The Steam Premium version of Dwarf Fortress has no native Mac build and the devs have cancelled macOS plans. This guide gets it running on Apple Silicon Macs using Apple's Game Porting Toolkit (GPTK) — no CrossOver, no Whisky (discontinued), no paid software needed.
---
## Prerequisites
- Apple Silicon Mac (M1/M2/M3/M4)
- macOS Sonoma 14.5+ (Sequoia or Tahoe recommended)
- Free Apple Developer account (for GPTK DMG download)
- Dwarf Fortress owned on Steam
- ~5 GB free disk space
## Step 1: Install Rosetta 2
```bash
softwareupdate --install-rosetta
```
## Step 2: Install x86 Homebrew
Your existing ARM Homebrew (at `/opt/homebrew`) won't work for GPTK. You need the x86 version alongside it:
```bash
arch -x86_64 zsh -c '/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"'
```
This installs to `/usr/local/bin/brew`. **Do NOT add it to your PATH** — it will conflict with your ARM Homebrew. We'll call it directly with the full path.
## Step 3: Install GPTK via Gcenx
```bash
arch -x86_64 /usr/local/bin/brew tap gcenx/homebrew-apple
arch -x86_64 /usr/local/bin/brew install gcenx/wine/game-porting-toolkit
```
This installs a prebuilt GPTK (much faster than building from source).
## Step 4: Download and install GPTK libraries from Apple
1. Go to [developer.apple.com/games/game-porting-toolkit](https://developer.apple.com/games/game-porting-toolkit/) (free Apple Developer account required)
2. Download the Game Porting Toolkit DMG (e.g. `Game_Porting_Toolkit_3.0.dmg`)
3. Mount and copy the D3DMetal libraries:
```bash
# Mount the outer DMG
hdiutil attach ~/Downloads/Game_Porting_Toolkit_3.0.dmg
# Mount the inner evaluation environment DMG
# (check the exact volume name after mounting)
hdiutil attach "/Volumes/Game Porting Toolkit 1/Evaluation environment for Windows games 3.0.dmg"
# Copy the libraries
ditto "/Volumes/Evaluation environment for Windows games 3.0/redist/lib/" \
"/Applications/Game Porting Toolkit.app/Contents/Resources/lib/"
```
## Step 5: Create a Wine prefix
```bash
WINEPREFIX=~/Gaming arch -x86_64 /usr/local/bin/wine64 winecfg
```
A configuration window will appear. Set Windows version to **Windows 10**, click Apply, then OK.
## Step 6: Install Visual C++ Runtime
This is required — Dwarf Fortress will crash without it.
```bash
arch -x86_64 /usr/local/bin/brew install winetricks
WINEPREFIX=~/Gaming WINE=/usr/local/bin/wine64 arch -x86_64 \
/usr/local/bin/winetricks vcrun2022
```
## Step 7: Download Dwarf Fortress via steamcmd
We download the Windows version directly — no need to run Steam inside Wine.
```bash
brew install steamcmd
steamcmd \
+@sSteamCmdForcePlatformType windows \
+force_install_dir ~/Gaming/dwarf-fortress \
+login YOUR_STEAM_USERNAME \
+app_update 975370 validate \
+quit
```
Replace `YOUR_STEAM_USERNAME` with your Steam username. It will prompt for your password and Steam Guard code.
## Step 8: Launch Dwarf Fortress
**IMPORTANT:** You must `cd` into the game directory before launching. Running the exe from outside the directory causes crashes and audio failure.
```bash
cd ~/Gaming/dwarf-fortress/
WINEESYNC=1 WINEPREFIX=~/Gaming arch -x86_64 /usr/local/bin/wine64 "./Dwarf Fortress.exe"
```
### Create a launch script
Save this as `~/Gaming/launch-dwarf-fortress.sh`:
```bash
#!/bin/zsh
cd ~/Gaming/dwarf-fortress/
WINEESYNC=1 WINEPREFIX=~/Gaming arch -x86_64 /usr/local/bin/wine64 "./Dwarf Fortress.exe"
```
Make it executable:
```bash
chmod +x ~/Gaming/launch-dwarf-fortress.sh
```
Now you can launch anytime with:
```bash
~/Gaming/launch-dwarf-fortress.sh
```
---
## Troubleshooting
### Game crashes with `msvcp140_atomic_wait.dll` error
You missed Step 6. Install the VC++ runtime with winetricks.
### No audio
1. Open Wine config: `WINEESYNC=1 WINEPREFIX=~/Gaming arch -x86_64 /usr/local/bin/wine64 winecfg`
2. Go to the Audio tab
3. Set the output device to your speakers (e.g. "MacBook Pro Speakers")
4. Click Test Sound to verify it works
5. Make sure you're launching from the game directory (Step 8)
### Game crashes on "Create World"
Make sure you `cd` into the game directory before launching. This is the most common cause — running the exe from outside the directory causes a null pointer crash on the audio thread.
### Steam Streaming virtual audio devices appearing
If you see "Steam Streaming Speakers" and "Steam Streaming Microphone" in your audio output list, these are leftover virtual audio drivers from the native Mac Steam app. Remove them:
```bash
sudo rm -rf "/Library/Audio/Plug-Ins/HAL/SteamStreamingMicrophone.driver" \
"/Library/Audio/Plug-Ins/HAL/SteamStreamingSpeakers.driver"
sudo launchctl kickstart -k system/com.apple.audio.coreaudiod
```
### `ca_channel_layout_to_channel_mask Unhandled channel 0xffffffff` in logs
This is a harmless Wine warning about audio channel mapping. It does not affect gameplay or audio output.
### Updating Dwarf Fortress
Re-run the steamcmd command from Step 7 to download the latest version.
---
## What's installed where
| Component | Location |
|-----------|----------|
| x86 Homebrew | `/usr/local/bin/brew` |
| GPTK app | `/Applications/Game Porting Toolkit.app` |
| Wine prefix | `~/Gaming/` |
| Game files | `~/Gaming/dwarf-fortress/` |
| Launch script | `~/Gaming/launch-dwarf-fortress.sh` |
---
## Credits
Guide by @seanellul, written with assistance from Claude Code. March 2026.
Tested with Dwarf Fortress Steam Premium on MacBook Pro M1 Pro running macOS Tahoe.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment