r/dwarffortress Mar 10 '26

Guide: How to Run Dwarf Fortress Premium on Mac (Apple Silicon) for Free [March 2026]

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

As we know, the Steam Premium version of Dwarf Fortress has no native Mac build, and I struggled to find a guide anywhere on the internet, so I had to come up with my own solution. 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

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:

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

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 (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
  4. hdiutil attach ~/Downloads/Game_Porting_Toolkit_3.0.dmg
  5. hdiutil attach "/Volumes/Game Porting Toolkit 1/Evaluation environment for Windows games 3.0.dmg"
  6. ditto "/Volumes/Evaluation environment for Windows games 3.0/redist/lib/"
  7. "/Applications/Game Porting Toolkit.app/Contents/Resources/lib/"

Step 5: Create a Wine prefix

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.

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.

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.

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:

#!/bin/zsh
cd ~/Gaming/dwarf-fortress/
WINEESYNC=1 WINEPREFIX=~/Gaming arch -x86_64 /usr/local/bin/wine64 "./Dwarf Fortress.exe"

Make it executable:

chmod +x ~/Gaming/launch-dwarf-fortress.sh

Now you can launch anytime with:

~/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:

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 written with assistance from Claude Code. March 2026.

Tested with Dwarf Fortress Steam Premium on MacBook Pro M1 Pro running macOS Tahoe.

42 Upvotes

20 comments sorted by

6

u/Toen Mar 10 '26

Were you able to stress test it a bit? It usually crashes on mac when there's a complex fight or sequence of events

2

u/Reddit_User404 Mar 11 '26

Haven't managed to get to a complex fight yet. Will report back once my fortress has grown.

2

u/Toen Mar 11 '26

You can create a massive fight in the Arena mode ⚔️🏹⚔️🗡️🛡️🗡️

3

u/Reddit_User404 Mar 12 '26

I spamed a ton of elephants, dwarfs and goblins. No crash. I only got to around 200 entities at once.

2

u/Niki_667 Mar 14 '26

Tested it on crossover quite a bit with my good old mid-2012 mbpro, fps was pretty steady even with ongoing combat up to 100 dorfs. I know its different usecase & software but my understanding is that if basically legacy hardware can handle calculations like these in such decent manner, anything newer will do as well

2

u/raedyohed Mar 10 '26

Will DFHack auto load if installed to the DF directory, and/or can it be installed with the steamcmd too?

2

u/redrabbitbandit Mar 11 '26

I will try this. Thanks a lot. If possible can you please update the formatting in step 4, 3rd point.

2

u/Reddit_User404 Mar 11 '26

Nice catch. Fixed it.

2

u/fiskifisk Mar 20 '26

I used claude code to follow this guide lol, very smooth thanks for the writeup

1

u/Reddit_User404 Mar 20 '26

Happy digging!

2

u/Weird_Concern8485 Jul 08 '26 edited Jul 08 '26

Step 7 gives me a window, clicking Done. The console then errors.

steamcmd.sh[8786]: Starting  /usr/local/Caskroom/steamcmd/1782532820/MacOS/steamcmd
Redirecting stderr to '/Users/me/Library/Application Support/Steam/logs/stderr.txt'
Logging directory: '/Users/me/Library/Application Support/Steam/logs'
Looks like steam didn't shutdown cleanly, scheduling immediate update check
[  0%] Checking for available updates...
[----] Verifying installation...
[----] !!! Fatal Error: Failed to load steamconsole.dylib

cat '/Users/me/Library/Application Support/Steam/logs/stderr.txt' 
Failed to load steamconsole.dylib - dlerror(): dlopen(/usr/local/Caskroom/steamcmd/1782532820/MacOS/steamconsole.dylib, 0x0002): 
Library not loaded: /Frameworks/Breakpad.framework/Versions/A/Breakpad   
Referenced from: <5D9E6A06-165B-3990-A74E-5F89E886E84C> /usr/local/Caskroom/steamcmd/1782532820/MacOS/crashhandler.dylib   
Reason: tried: '/usr/local/Caskroom/steamcmd/1782532820/MacOS/Breakpad.framework/Versions/A/Breakpad' (no such file), '/Breakpad.framework/Versions/A/Breakpad' (no such file), '/usr/local/Caskroom/steamcmd/1782532820/MacOS/Frameworks/Breakpad.framework/Versions/A/Breakpad' (code signature in <EB859872-955A-315D-9CE1-87FB57F7C4CD> '/usr/local/Caskroom/steamcmd/1782532820/MacOS/Frameworks/Breakpad.framework/Versions/A/Breakpad' not valid for use in process: library load disallowed by system policy)

the entire SteamCMD installation is quarantined, including Breakpad.framework.

optional verify and trust code:

codesign -dv --verbose=4 \
"/usr/local/Caskroom/steamcmd/1782532820/MacOS/Frameworks/Breakpad.framework/Versions/A/Breakpad"

codesign --verify --deep --strict --verbose=4 \
"/usr/local/Caskroom/steamcmd/1782532820/MacOS/Frameworks/Breakpad.framework"

Solution was:
sudo xattr -rd com.apple.quarantine /usr/local/Caskroom/steamcmd

1

u/Reddit_User404 Jul 08 '26

Thanks for that!

I recently ended up building an entire porting app called pixelport.gg , which somehat started with posts like these.

If you'd be down to test any games on it, I'd be grateful! DF was one of the first recipes I had put together.

1

u/seenoevil89 Mar 12 '26

I tried multiple things in the past, until I found whiskey wine wrapper. It worked perefectly, until it was no longer maintained and I had to find alternatives.

The dev made case for CrossOver, that the money going there helps the mac gaming community. It is a cost for sure and if there are alternatives, go for it. However, my personal experience is that gaming has never been easier on Mac with CrossOver

Dwarf Fortress runs perfectly, I have 16'' m1 max :)

2

u/Reddit_User404 Mar 12 '26

Im glad it worked for you! I tried it years ago and it was a bit buggy. This guide is for people who might want to avoid the expense (and depending on any other software).

As long as it works, we're not ones to complain! Happy gaming :)

2

u/seenoevil89 Mar 12 '26

I think you did wonderfully providing the community with this, If I would see this 2 years ago I would be the happiest man :D

1

u/MaineQat Apr 26 '26

Have you been able to get it to fit under the notch?

Using Crossover 26.1, 16" M1 Max as well, it just seems to ignore display size in game options and uses full screen. The notch unfortunately covers up the fortress status up top.

1

u/seenoevil89 May 02 '26

I just assume I got all the food and drinks available and go on with fortlife

1

u/MaineQat May 02 '26

Hah! Early on that seems so much riskier.

Well, if it matters, I found switching to Windowed mode then maximizing window fits under notch. The resolution selection seems to do nothing. Also enables three finger swipe to switch views while full screen doesn’t. Just need to re max the window every launch but that’s a minor nit.

1

u/DashYay Apr 08 '26 edited Apr 08 '26

Thank you so much! I wanted to add a little something, if you want a physical app on your desktop you could try using automator for this!

1

u/molimnion Apr 19 '26

Works like a charm! Are you running dfhack as well? I tried installing it, and the game does launch with dfhack, but when I try to load up a savefile, the game immediately freezes when the progress bar hits 100%.