a macOS app to easily play various Windows games with native mac runtimes and tinker with them.
A surprising number of games have runtimes that are available on macOS (and Linux) even though the games themselves are packaged for Windows and don't work out of the box. These games don't require WINE or emulation, and running natively can gain you higher performance and (sometimes) better compatibility. The purpose of this launcher is to configure these native runtimes automatically so you can just drag in a game directory or exe and start playing.
This launcher started by taking the patches in https://github.com/bakustarver/rpgmakermlinux-cicpoffs to macOS and wrapping it all in a UI, although I have added many more features since then. It has now gotten to the point where a nontrivial proportion of indie games meant for windows can just be dragged in and played (at least with the sampling bias of "indie games I personally thought of"). Still, compatibility is at the level of "try it" for many things.
There are quite a few benefits to using native macOS runtimes for games, even when CrossOver compatibility is quite good and some developers distribute native mac builds.
- Games are generally more performant and efficient running under native runtimes compared to CrossOver/WINE.
- Compatibility is often better on native runtimes as well, although sometimes it goes the other way.
- Native runtimes have better OS integration (window management, mouse behavior, etc). I have had so much more "erratic" behavior (mouse movements not feeling right, windowed vs fullscreen mode issues or blocks, kind of corrupted sound, etc) on CrossOver, so in practice, if a game can launch in MacLauncher, I prefer to use it.
- Some .app deployments for indie games (e.g. itch.io) are broken because the developer just clicked "build for mac" and never test it, and the .app then runs into signing or packaging problems. This is perfectly avoidable and can be solved by just pointing a properly working runtime at its data.
In addition, MacLauncher contains a suite of tools for extracting, decompiling, adding cheats into many of the game types it supports, some of which are unique and custom written for the MacLauncher project. You can also choose exactly which version of each backend you want to use from live listings (unless it's a custom build that MacLauncher supplies): e.g. Godot is often particular about versions, and matching the major+minor version of every specific game is recommended. To make it more convenient, version detection happens automatically.
MacLauncher is different from many other game launchers in that it is local first (provide your own game files), with no integrations with storefronts, and will never connect to the internet at all except for downloading and managing remote runtime versions. It is more of a manager/power tool geared towards tinkerers rather a traditional launcher.
The app itself is written in Electron so that web games don't require any additional downloads.
MacLauncher supports 36 game types:
- macOS apps: you can import and manage these, and also remove Apple quarantine so badly packaged games can run without showing as "damaged".
- RPGMaker: 2000/2003 through EasyRPG Player, MV/MZ through Electron or NW.js, XP/VX/VX Ace through MKXP-Z.
- HTML games: similarly to RPGMaker MV/MZ, most games based on web technologies will "just work", including Construct, TyranoBuilder and GameMaker HTML5.
- Ren'Py
- Godot
- LÖVE
- GameMaker: you can use the official GameMaker runtime, or alternatively, Butterscotch for GameMaker Studio and OpenGMK for GameMaker classic (custom macOS port).
- Unity: Mono games can usually run through the macOS Unity player and are supported in MacLauncher. Il2Cpp translates everything into system calls so you need CrossOver for that.
- XNA/FNA: with FNA, FNA3D, FAudio and .NET.
- WOLF RPG: with Browser Woditor.
- Flash (
.swf): via Adobe Flash Projector or Ruffle - Java: with Temurin version management, Vineflower decompilation, and steamworks4j.
- Infinity Engine: GemRB.
- Adventure games: with ScummVM.
- MUGEN: Ikemen GO.
- Haxe: HashLink.
- Visual novels: there are a lot. Surprisingly many VN engines get cross-platform runtimes. Here is what MacLauncher currently supports:
- NScripter: Onscripter-Yuri, and a custom macOS port of ONScripter-EN.
- KiriKiri / KAG: krkrsdl2 and KAG3.
- MAGES: Impacto
- AI5WIN: AI5-SDL2.
- AliceSoft: System3, xsystem35, and xsystem4.
- Siglus / RealLive: siglus_rs and RLVM (RealLive-only for the latter).
- Nitroplus: NPengine and libnpa.
- Minori: ReMinori.
- FAVORITE / FVP: RFVP
- VNDS: VNDS-LOVE.
- Other Windows executables: if you want to use MacLauncher as a library organizer, you can provide a local CrossOver application to run any Windows executable, and you can manage multiple versions of it. There are some convenient options built in, such as easy options to set the locale and a workaround for BepinEx to work, as well as the standard graphics options and WINE flags. See the CrossOver guide for details.
Many of these also have decompilation and/or save editing tools. Some backends, like CatSystem2 and BGI, aren't currently working for play but can be detected/decompiled. See runtime guides for more information.
Most of MacLauncher is about consolidating existing tools and runtimes and handling things for the user, but there is also a significant amount of functionality that you can't find anywhere else. Here are some highlights:
- Custom RPGMaker cheats, which I prefer over any other ones I've found on GitHub.
- A port of OpenGMK to macOS: involving AppKit input/windows, OpenGL, CoreAudio and original-read/private-write handling. As far as I know, this is the only way to get GameMaker classic games running natively on mac.
- Also, custom macOS ports of ONScripter-EN, AI5, KAG3, and ReMinori.
- Automatic offline Steam API support (for things needing Steam API before play).
See attributions for upstream projects, licenses and adaptation boundaries. MacLauncher's own code is MIT licensed; upstream source, derived patches, tools, fonts and proprietary components retain their respective notices.
The easiest way to run is through MacLauncher.app in the Releases. It is unsigned and you will need to allow it through Gatekeeper because I don't want to pay Apple $100 per year for a developer ID. How to do it: Open Anyway in System Settings → Privacy & Security
To run from source, install Node.js 22.12+, 24 or 26 and pnpm, then:
git clone https://github.com/procrastinine/maclauncher.git
cd maclauncher
node scripts/init-submodules.cjs
pnpm install --frozen-lockfile
pnpm devUpdate with git pull --no-recurse-submodules, node scripts/init-submodules.cjs and pnpm install --frozen-lockfile. The shared initializer fetches pinned build inputs while skipping unused nested and reference-only sources. Build a macOS app with pnpm package:mac.
Launcher data and installed runtimes live in ~/Library/Application Support/maclauncher/. Run or inspect a game without the launcher with pnpm launch --game /path/to/game --wait or --inspect.
