Monsters & Memories on macOS
A small bash tool that gets the game running on Apple Silicon. The Mac launcher patches the game natively; CrossOver runs the Windows game client.
What this is
Monsters & Memories ships a Mac launcher, but the game itself is a Windows Unity binary — the launcher is a nice native UI that downloads a Windows mnm.exe. Running that .exe on a Mac means a compatibility layer.
This tool automates the hybrid setup the community uses:
- Fixes the “App is damaged and can’t be opened” error on the Mac launcher (it’s not damaged — just ad-hoc signed and quarantined).
- Lets the Mac launcher patch the game natively (no Wine involved in patching).
- Creates a minimal CrossOver bottle tuned for the game (DXVK, Windows 10 64-bit).
- Runs
mnm.exein the bottle with your token pulled from the launcher’s own SQLite DB.
The Windows launcher crashes under Wine on CrossOver 26, so this deliberately doesn’t run it. See LEARNINGS.md if you want the full investigation.
Prerequisites
- macOS (Apple Silicon recommended; Intel works but without the D3DMetal fast path)
- CrossOver — paid, trial available. The tool auto-detects it in
/Applicationsor~/Applications. - A Monsters & Memories account
curl,bash,sqlite3— all ship with macOS
Install
Grab the script — either clone the repo or fetch the single file:
curl -fsSL https://raw.githubusercontent.com/JollyGrin/MonstersAndMemories-mac-crossover/main/mnm.sh -o mnm.sh
chmod +x mnm.sh
./mnm.sh all
all runs doctor (prints what it sees), mac (installs the launcher to /Applications), and bottle (creates the CrossOver bottle).
Daily workflow
First time — after ./mnm.sh all:
./mnm.sh patch # opens the launcher, log in, hit Download/Install
./mnm.sh play # run it after patching finishes
Every session after that:
./mnm.sh play
Tokens last ~28 days. When they expire, run ./mnm.sh patch, let the launcher re-login, then ./mnm.sh play again. doctor will warn you ahead of time.
mnm.exe natively on macOS and crashes. Use ./mnm.sh play instead — it routes through CrossOver with your token.
Commands
| Command | What it does |
|---|---|
doctor | Environment check — CrossOver, bottle, launcher, token status, game files |
mac | Download + strip quarantine + re-sign + install the Mac launcher |
bottle | Create a CrossOver bottle (win10_64, DXVK on) |
patch | Open the launcher with --stinky-cheese (skips the update loop) |
play | Read token from launcher.db, cxstart mnm.exe in the bottle |
all | doctor + mac + bottle |
clean | Remove cached downloads |
nuke-bottle | Destroy the CrossOver bottle (confirms first) |
Environment overrides:
MNM_DL_DIR | Download cache dir (default ./dl) |
MNM_APP_DIR | Where to install the .app (default /Applications) |
MNM_BOTTLE | CrossOver bottle name (default mnm) |
How it works (30 seconds)
- Mac launcher fix. The
.app.tar.gzis ad-hoc signed with a quarantine xattr and a missing_CodeSignature/CodeResourcesseal. Two commands fix both:xattr -dr com.apple.quarantineandcodesign --force --deep --sign -. Most guides only do the first and wonder why it still fails on stricter macOS releases. - Launcher self-update loop. The Mac launcher re-downloads itself forever on launch. The undocumented
--stinky-cheeseflag skips the update check. - Token handoff. The launcher stores a JWT in
~/Library/Application Support/com.monstersandmemories.mnm-patcher-app/launcher.dbundersettings.token.playreads it and passes--token <JWT>tomnm.exethroughcxstart. - Game client only. The CrossOver bottle doesn’t run the Windows launcher (it crashes in ole32 under wine-11.0). It only runs the game binary the Mac launcher already downloaded.
Troubleshooting
| Symptom | Fix |
|---|---|
| “App is damaged and can’t be opened.” | ./mnm.sh mac — does the xattr+codesign fix properly. |
| Launcher loops updating itself. | Always open with ./mnm.sh patch; never double-click the Finder app. |
| In-game: “Login failed: No authentication token received.” | Misleading wording — the token is usually just expired. ./mnm.sh patch → re-login → ./mnm.sh play. doctor now surfaces expiry. |
| In-game: “Patch Required. Please exit game and update.” even though the launcher says up to date. | Usually not an actual patch issue. The server returns this to everyone when public servers are closed between scheduled playtests — see the Notice panel on the server-list screen. Options: opt into closed testing, wait for the next public window (announced on Discord / mailing list), or use the local campfire scene (flame icon on Character Select). If you really do suspect a stale client, ./mnm.sh repatch clears the launcher’s version record and forces a fresh manifest check. |
| Launcher crashes when I click Play. | Expected. Use ./mnm.sh play. |
| Game looks glitchy or crashes at login screen. | The bottle ships with DXVK. D3DMetal crashes this game; DXMT has known rendering glitches. |
| CrossOver in a non-default location. | Tool checks /Applications and ~/Applications. If yours is elsewhere, symlink it or open an issue. |
Launcher installed the game to a non-default folder and ./mnm.sh play can’t find it. | The launcher picks its CWD as the default install path. doctor auto-discovers common spots (./mnm, ~/Downloads/mnm, ~/Applications/mnm, ~/Games/mnm) — so just re-run doctor. If it’s somewhere else entirely, set MNM_GAMEDIR=/path/to/mnm. |
| Tried everything and it’s still broken. | ./mnm.sh nuke — prompts you to type nuke, then wipes the app, launcher DB, game files, bottle, and download cache. Then run ./mnm.sh all && ./mnm.sh patch && ./mnm.sh play. Fresh slate fixes almost everything. |