Unofficial · community tool · use at your own risk

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:

  1. 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).
  2. Lets the Mac launcher patch the game natively (no Wine involved in patching).
  3. Creates a minimal CrossOver bottle tuned for the game (DXVK, Windows 10 64-bit).
  4. Runs mnm.exe in 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

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.

Do not click “Play” inside the Mac launcher. It tries to exec the Windows mnm.exe natively on macOS and crashes. Use ./mnm.sh play instead — it routes through CrossOver with your token.

Commands

CommandWhat it does
doctorEnvironment check — CrossOver, bottle, launcher, token status, game files
macDownload + strip quarantine + re-sign + install the Mac launcher
bottleCreate a CrossOver bottle (win10_64, DXVK on)
patchOpen the launcher with --stinky-cheese (skips the update loop)
playRead token from launcher.db, cxstart mnm.exe in the bottle
alldoctor + mac + bottle
cleanRemove cached downloads
nuke-bottleDestroy the CrossOver bottle (confirms first)

Environment overrides:

MNM_DL_DIRDownload cache dir (default ./dl)
MNM_APP_DIRWhere to install the .app (default /Applications)
MNM_BOTTLECrossOver bottle name (default mnm)

How it works (30 seconds)

  1. Mac launcher fix. The .app.tar.gz is ad-hoc signed with a quarantine xattr and a missing _CodeSignature/CodeResources seal. Two commands fix both: xattr -dr com.apple.quarantine and codesign --force --deep --sign -. Most guides only do the first and wonder why it still fails on stricter macOS releases.
  2. Launcher self-update loop. The Mac launcher re-downloads itself forever on launch. The undocumented --stinky-cheese flag skips the update check.
  3. Token handoff. The launcher stores a JWT in ~/Library/Application Support/com.monstersandmemories.mnm-patcher-app/launcher.db under settings.token. play reads it and passes --token <JWT> to mnm.exe through cxstart.
  4. 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

SymptomFix
“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.