Muguet
GTA V 的原生 Mach-O iOS/macOS 移植版,支持多人联机
它是如何工作的?
整个移植依赖于游戏的 WebAssembly 编译版本。在浏览器中,game.wasm 运行在 JS 引擎内,背后是 WebGPU、Web Audio、web workers……
Muguet 抛弃了这一层,将同一个 game.wasm 作为普通原生应用运行:代码部分使用 wasmtime,图形部分使用运行在 Metal 之上的 wgpu
在 macOS 上,游戏代码会在首次启动时编译为原生 arm64 并缓存。在 iOS 上我们无法妥善做到这一点(我也不想让你去折腾启用 JIT 的麻烦事),所以游戏代码会在构建应用时编译并直接打包进去
在此基础上,Muguet 还添加了一个小型 UDP 多人联机功能(让其他拥有相同移植版的人可以和你一起玩)
游戏文件
因为我不想惹上官司,你需要自备一份 .zip 格式的副本:即包含 data/ 和 b/<build>/(内有 game.wasm 和 shaders/)的文件夹
它与网页移植版基本是同一套源文件。
之后 Muguet 本体会要求你提供该 zip 文件
系统要求
- Apple Silicon Mac,macOS 14 或更高版本
- Rust 工具链
- Xcode 26 或更高版本
iOS 还需要:
rustup,执行rustup toolchain install 1.98.1和rustup target add aarch64-apple-ios --toolchain 1.98.1xcodegen(brew install xcodegen)- Apple 开发者账号
- 一台 iOS 15 或更高版本的设备,最好有 8 GB 内存
构建
简单方式:在终端中粘贴以下命令:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/c22dev/muguet/main/build.sh)"
它会把 Muguet 下载到 /tmp/muguet,安装缺失的组件(Homebrew、Rust 等),然后询问你想要 Mac 版还是 iOS 版,并引导你完成后续步骤。生成的 .app / .ipa 会保存在 ~/Downloads/muguetOutput。已经有仓库了?双击 build.command,或运行 ./build.sh
你需要从 App Store 安装 Xcode 26 或更高版本。要在 iPhone / iPad 上安装,请用你的 Apple ID 登录 Xcode(Settings > Accounts),免费账号即可
手动构建,macOS:
./make-app.sh
生成 build/Muguet.app
iOS:
TEAM=<your team id> ./make-ios.sh game.zip --install
--ipa 会生成 build/Muguet.ipa。使用免费账号时,请加上 FREE=1(以及你自己的 BUNDLE_ID)
请使用 AltStore 安装本应用。用 Sideloadly 可能无法正常工作(SideStore 也可能有问题,参见此 issue)
使用付费开发者账号时本应用同样可用。
多人联机
一名玩家从启动器开始主持(或在任意机器上运行 muguet-server),其他人用该地址加入。UDP 端口 47520
局限性
- iOS 需要“提高内存上限”的 entitlement
- 剧情任务仅支持单人游玩
致谢
- Kagander 修复了小地图
- inj-src 实现了多核解码 bc 纹理
- Dbhardwaj99 报告了真实剩余磁盘空间问题
- dre4moff 实现了应用失去焦点时释放手柄输入
欢迎贡献!