For Apple Silicon Macs (M1–M5). Free. No CrossOver license needed.
EU5 has no Mac version, and the popular CrossOver/Wine recipes broke with patch 1.3 "Pavia" (the game hangs or silently dies). This guide gets EU5 1.3 running natively-fast on your Mac — including the 3D terrain, which even working setups usually have disabled — and with a fully working, visible Steam client (no black window, no engine-swapping).
It was worked out on an M5 Max running macOS 26, and every step below was validated on
real hardware. If you just follow the phases in order, you don't need to understand any
of it — but if you want the full story of why this works, read
2-HOW-IT-WORKS.md.
- An Apple Silicon Mac (M1 or newer, 16 GB RAM recommended)
- macOS Sonoma or newer
- A Steam account that owns EU5
- Disk space: the game (~100 GB) plus ~3 GB for tooling
- 30–60 minutes, most of it download time
| Phase | What happens | Difficulty |
|---|---|---|
| A | Install Sikarugir (a free Wine app), set up Steam, install EU5 | Point-and-click |
| B | Run one script that configures everything | Copy-paste two commands |
| C | Play, and know the one maintenance chore | Trivial |
-
Install Homebrew if you don't have it (it's the standard Mac package manager). Open the Terminal app and paste:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" -
Install Rosetta 2 and Sikarugir:
softwareupdate --install-rosetta --agree-to-license brew install --cask sikarugir
-
Create a Steam wrapper. Open Sikarugir from Applications, create a new wrapper for Steam with the default (stock) engine it offers. This gives you an app like
~/Applications/Sikarugir/Steam.app. -
Set up Steam inside it. Open the wrapper, let Windows Steam install, log in to your account (approve Steam Guard if asked), and install Europa Universalis V. This is the big download — go make coffee.
-
When EU5 is fully installed, quit Steam completely (Steam menu → Exit) and make sure the wrapper app is closed.
-
Download the files from this gist (Download ZIP button, top right), unzip, then in Terminal:
cd ~/Downloads/<the-unzipped-folder> chmod +x replicate-eu5-wine11.sh ./replicate-eu5-wine11.sh "$HOME/Applications/Sikarugir/Steam.app" --launch
(If your wrapper has a different name or location, use that path instead. Keep
winmm-proxy.dll.b64in the same folder as the script — that's the Steam-UI fix.) -
The script prints what it's doing at every step. It downloads the correct Wine and graphics library, installs them into your wrapper (keeping backups of everything it touches), fixes a game file that crashes Wine, switches the game to the renderer that supports 3D terrain, and installs a small fix so the Steam client window renders. With
--launchit then boots the game and tells you plainly whether it worked:==> GAME VERDICT: SUCCESS — native Vulkan, terrain OK. GPU=Apple M4 Pro
- To play: double-click the wrapper app → the Steam client opens (it renders normally now) → click Play on Europa Universalis V. Log in, browse the store, buy DLC — the client just works, like Steam on any PC.
- First launch is slow (the game rebuilds its shader cache — a few minutes). After that it's fast.
- The one chore: whenever Steam patches EU5 (or you "Verify integrity of game files"), the game may suddenly die silently a few seconds after launch. That's a known file the patcher restores. Fix: just re-run the Phase B script — it's safe to run repeatedly and only fixes what needs fixing.
Prefer double-click to launch straight into the game (skipping the client)? Set the wrapper's Program Flags (Sikarugir → Configure) to
-silent -applaunch 3450310. To get the client back, clear that field.
| Symptom | Fix |
|---|---|
| Game dies ~5 s after launch, right after a game update | Re-run the script (restores the emptied compound_settings.txt) |
| Game dies ~5 s after launch, other times | Delete ~/Documents/Paradox Interactive/Europa Universalis V/shadercache and relaunch |
| No 3D terrain in game | Run the script again with --launch and read the verdict — it detects and explains the cause |
| Steam client window is black | The Steam-UI fix didn't install. Make sure winmm-proxy.dll.b64 was in the same folder as the script, then re-run it. (The game still works regardless.) |
| Steam won't render even after re-running | You can still play: set Program Flags to -silent -applaunch 3450310 (launches the game without the client) |
"Verify" says GPU is GeForce 6800 |
The -vulkan launch option didn't stick — quit everything fully and re-run the script |
Is this safe / reversible? Yes. The script backs up every file it replaces
(.bak), your original engine is kept (wine.bak-stock), and your saves live in
~/Documents/Paradox Interactive/ untouched. Steam cloud saves work normally.
Does Steam still update itself? Yes. The Steam-UI fix lives entirely inside the Wine prefix and never modifies any Steam file, so Steam's own auto-updates keep working normally — nothing is "pinned."
Will this get me banned? No. Nothing touches the game's code or Steam's DRM — the game runs through Steam exactly as designed. This is the same class of setup as CrossOver/Proton.
Why not just use CrossOver? CrossOver 26's Wine is version 11.0, which predates
the Wine bug-fix EU5 1.3 needs (it landed around Wine 11.8). CrossOver currently hangs
on 1.3 no matter what you click. Details in 2-HOW-IT-WORKS.md.
Performance? Very good on Apple Silicon — the game runs its native Vulkan renderer through MoltenVK on Metal, and reports your real GPU.
Everything here is built from open-source, publicly downloadable components: Wine 11.13 (Gcenx macOS builds), MoltenVK 1.4.1 (Khronos), Sikarugir.
Is there a reason that it doesn't set the renderer to be Vulkan in the pdx_settings.json file?