How to play PC games on Mac? - Extended Tutorial

It looks like the era of the extinct Mac-gamers has finally ended, 

every day the gap between pc-linux-mac gamers keeps fading. Of course, you still can’t say that the most optimal version of videogames on Mac exists yet — it still needs a lot of polishing — but we’re really, really close.


Honestly, these advances aren’t happening because Apple is super excited about gamers using its systems to run “.exe” files — it’s more about getting game studios closer to Apple so they can ship games on Mac day one like they do on PC

Steam (Valve) has made massive progress with its Proton system. To put it simply: they took the legendary wine, optimized it like crazy, and ended up creating the best compatibility layer out there — especially after building their own OS for the Steam Deck: SteamOS.

It seems Apple is doing something similar with GPTK (Game Porting Toolkit). Their real goal wasn’t for us (users) to use it to play Windows games on Mac, but rather to help developers port their games much more easily into Apple’s ecosystem. This has been used, to a greater or lesser extent, by Capcom, CD Projekt, and many others to give us these incredible ports for the people who prefer the apple, heh...



recommendation: best AAA games on Mac: add URL later


So yeah — here’s the tutorial so you can run your Windows games on Mac in the simplest way possible, no fluff, straight to the point. You can choose between the easiest and free option or the even easier but paid option.

The easiest but free option has its limitations. Here you’re only going to use GPTK, whichever version you prefer to install — GPTK 3, GPTK 2.1, or whatever you choose — but only that. If you want to use other compatibility layers, then you’re on your own; it’s not easy, although I don’t think it’s necessary either. Let me explain:

Metal

GPTK is specifically d3dMetal. It’s the compatibility layer Apple created to translate DirectX 12 (and below) to Mac. This doesn’t mean compatibility is one-to-one — it isn’t. d3dMetal still struggles to translate DirectX 12 perfectly, while DirectX 11 or below is translated pretty well, almost perfectly. It’s the best compatibility layer for the vast majority of games. Yes, many aren’t fully optimized, but for most cases, it’s absolutely worth it.


Now, what about those games that aren’t compatible with d3dMetal, for whatever reason? Well… there are other compatibility layers too, like plain pure wine, which will let you run .exe files on Mac. It’s enough for many apps, but it’s not ideal for games. 

There are also two more: DXMT, which translates directly from DirectX 11 to Metal — exactly that. If it’s DirectX 12, it’s not enough. If it’s DirectX 10 or 9 or lower, it may not be as compatible. It’s open source and can be installed with wine in a very simple way. You can base yourself on this script to install and use it: 

Hard mode:

bash dxmt.sh
#!/bin/bash
set -e
# Install Homebrew if missing
command -v brew >/dev/null 2>&1 || \
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install Wine and deps
brew install --cask --no-quarantine wine-staging || true
brew install cmake ninja git
# Clone and build DXMT
git clone https://github.com/3Shain/dxmt.git ~/dxmt || cd ~/dxmt && git pull
cd ~/dxmt && ./build.sh
# Create prefix
PREFIX="$HOME/.wine_dxmt"
WINEPREFIX=$PREFIX wineboot --init
# Copy DLLs
cp build/d3d11.dll build/dxgi.dll $PREFIX/drive_c/windows/system32/
echo "
Done. Use:
WINEPREFIX=$PREFIX wine 'C:/path/game.exe'"


The other layer is DXVK, which translates DirectX 11 or lower to Vulkan. Metal has an option to literally translate Vulkan to Metal, which can make life easier mainly for emulator developers and can be useful. It’s also very open source and can be installed with this script: 


Hard mode: 

bash dxvk.sh
#!/bin/bash
set -e
# Install dependencies
brew install --cask wine-staging moltenvk || true
brew install wget tar
# Download DXVK (latest stable, change if there’s a newer one)
wget -O dxvk.tar.gz https://github.com/doitsujin/dxvk/releases/download/v2.3/dxvk-2.3.tar.gz
tar -xvf dxvk.tar.gz && cd dxvk-2.3
# Create prefix
PREFIX="$HOME/.wine_dxvk"
WINEPREFIX=$PREFIX wineboot --init
# Install DXVK into the prefix
WINEPREFIX=$PREFIX ./setup_dxvk.sh install
echo "
DXVK ready in $PREFIX
To run a game:
WINEPREFIX=$PREFIX wine 'C:/path/game.exe'"

Both DXMT and DXVK are layers that work with most games that support DirectX 11 or lower, but that’s the point. Most modern games don’t even support DirectX 11 anymore — almost all of them use DirectX 12. And neither DXMT nor DXVK — much less plain wine — are compatible with modern games, so you’ll need d3dMetal no matter what. That’s where we can really lose our minds and give up. Almost every game is a different case, but most are easily supported by





The easy and free mode:

 
GCenX 😊 

You can go straight to their GitHub repo (https://github.com/Gcenx/game-porting-toolkit/releases), download the latest version — even if it’s beta — and that’s it. It’s a “.tar.xz” archive. 


and inside you’ll find an app called “Game Porting Toolkit.app” — and that’s it. The app automatically detects any .exe file and runs it with d3dMetal. Most games that can run with d3dMetal will work. 


You can worry about prefixes, or you can simply use the default one (.wine), which I totally recommend — without touching absolutely anything — unless it’s a specific case for some game. 

Without having to create a prefix (like Whisky bottles or CrossOver), and if you want to run a game with an extra command, you can use wine64 after running “Game Porting Toolkit.app” at least once. Example in Terminal: 

If you want to force DirectX 11, try: 

wine64 path/to/your/game.exe -dx11 

The flag (the command to run the game) is added at the end. For DirectX 11 try -dx11 or -d3d11. Not every game will allow it, but most will. 

If you want to make your life harder and create your prefixes, use this: 

chmod +x install_gptk.sh
bash install_gptk.sh

#!/bin/bash
set -e
# 1. Install Homebrew if not installed
command -v brew >/dev/null 2>&1 || \
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 2. Gcenx tap and GPTK formula
brew tap gcenx/wine
brew install gcenx/wine/game-porting-toolkit
# 3. Create a Wine prefix and open winecfg (manually set Windows 10)
export GPTK_PREFIX=~/gptk-prefix
$(brew --prefix game-porting-toolkit)/bin/wine64 winecfg
# 4. Run the game
gameportingtoolkit ~/gptk-prefix '/path/to/the/executable.exe'




Even easier but paid version: 


CrossOver


You need to buy a CrossOver license, although it has a 14-day trial so you can test it. If you install CrossOver directly, you skip almost all the hassle: it comes with the most up-to-date official GPTK version (not the beta), and as of this blog it still doesn’t use GPTK 3 beta 3, which is officially the most advanced one created by Apple. It also includes DXMT, DXVK, wine — everything installed without needing to touch the Terminal. It comes with tons of game presets to make them even more compatible. 



Cons: it doesn’t have the latest GPTK version, and that can be a problem for modern games. 

Recommendation (Optional) Update GPTK:

Step 1: Go to Apple’s developer page where the latest GPTK is (Apple’s developer page with the latest GPTK


and download the most up-to-date file, for example: "Game Porting Toolkit 3.0 beta 3.dmg". 



Step 2: Mount the file you just downloaded.

Step 3: Run the file that says something like: "Evaluation environment for Windows games 3.0 beta 3.dmg". Install it and mount it.



That’s the only thing that really matters in the archive you downloaded. Don’t get confused: it’s not a traditional installer — ignore everything else. Make sure it mounted on your Desktop, that’s the default behavior when running this .dmg. 

Run this simple code and you’re done:

cd /Applications/CrossOver.app/Contents/SharedSupport/CrossOver/lib64/apple_gptk

mv external external.old; mv wine wine.old

ditto "/Volumes/Evaluation environment for Windows games 3.0 beta 3/redist/lib/" .


If you did everything right, you now have the most up-to-date GPTK in CrossOver.


Extra trick: how to know if you already have the most up-to-date Game Porting Toolkit:

Step 1: Run this code in Terminal:  /bin/launchctl setenv MTL_HUD_ENABLED 1  to enable the Metal HUD. 




Here you can see your GPTK version and even which DirectX version





 
Comment and feel free to ask if you have any questions. 


Previous Post Next Post