ESC
开源 1 分钟阅读

muguet:GTA V 的 iOS/macOS 原生 Mach-O 移植版,支持多人联机

开源项目 muguet 将 GTA V 以原生 Mach-O 应用形式移植到 iOS/macOS。它复用游戏的 WebAssembly 编译版本,用 wasmtime 运行代码、wgpu 调用 Metal 图形,并附带简易 UDP 多人联机。用户需自备游戏文件副本,项目提供一键构建脚本,支持 Apple Silicon Mac 和 iOS 15 以上设备。

来源:GitHub

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.1
  • xcodegen(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 实现了应用失去焦点时释放手柄输入

欢迎贡献!