一台 8GB 内存的 M1 MacBook Air,没有风扇,跑《怪物猎人崛起》能到 60 帧。同一款游戏在 Switch 原机上是锁 30 帧的。更关键的是,这不是模拟器,也不是 CrossOver 转译,游戏自己的代码直接在 Apple Silicon 上执行。

做这件事的项目叫 nxnative。按作者伯衡君的说法,它几天前还只能跑一个开放世界游戏,现在能编译任意 Switch 游戏,iOS、iPadOS、macOS 都能以原生形式安装运行。

先把摆在那儿的画面说清楚。《怪物猎人崛起》在 Switch 上锁 30 帧,在这台 8GB 无风扇的 M1 Air 上跑 60 帧。《圣兽之王》从来没出过 Windows 版,CrossOver 那条跳板根本用不上,它以前在 Mac 上只能靠模拟器,现在有了原生版本。

整件事的起点是《暗黑破坏神 2 重制版》,一个叫 D2R Mobile 的项目,最初只是为了在手机上跑这个游戏。它的窗口挂着一个监测浮层:M3 Max、2560x1666、Metal 4、2.21GB 显存占用、60 帧、帧间隔 16.67 毫秒。16.67 毫秒正好对应 60 帧,这组数字是硬件在如实汇报工作节奏。

要理解这事有多不同,得先算清模拟器的成本。常规做法是用模拟器,它假装自己是一整台 Switch:处理器、图形芯片、操作系统全部要模拟出来,游戏发给“主机”的每一个请求都要被翻译一遍。这层假身份很贵,所以模拟器想吃满帧率,得靠很强的机器顶着。

nxnative 不模拟任何东西。关键前提是硬件同源:Switch 用 ARM,Apple Silicon 也是 ARM,指令集天生对得上,绝大多数代码不需要翻译。它只做四件事:

  • 让游戏的原始代码直接在 CPU 上跑;
  • 改掉少数 macOS 跑不了的指令;
  • 伪造刚好够这个游戏用的那部分 Switch 系统环境;
  • 把任天堂的图形接口重建到 Apple 的 Metal 上。

换句话说,它要骗的不是一整台主机,而是游戏所需的那一小圈环境,欺骗的范围小了两个数量级,开销也就跟着降下来。

流程本身不复杂,前提条件卡得死。需要两样东西:一份你自己合法拥有的 Switch 游戏本体,以及一个 prod.keys 密钥文件,从你自己越狱的 Switch 上导出。然后跑脚本,一个 Build 文件夹里放着游戏目录加一个 15KB 的 prod.keys,终端里一行命令,指定游戏路径、密钥路径和平台参数。脚本流水线是固定的:解包、抽取、拆分、转码、修补,最后产出一个 .app。第一次编译从几分钟到一小时不等,之后走缓存就快了。产出的东西拖进应用程序文件夹,双击启动,和任何一个 Mac 应用没有区别。

最反直觉的是 8GB 的 M1 Air 到底撑不撑得住。答案是能行,因为原生移植的算力需求和“模拟一整台主机”完全不是一个量级。少了那层翻译,M1 的 GPU 甚至有余力——浮层上显示 GPU 帧时间 9.36 毫秒,而 60 帧的预算有 16.67 毫秒,还剩小一半。换到 MacBook Pro 上,同时开几个原生窗口跑不同的 Switch 游戏,全程 60 帧也扛得住。

那能不能跑任意游戏?答案分两层。第一层,能编译,构建脚本接受你扔进去的任何 Switch 游戏,不挑。第二层,能不能好用,这里有一批附加修复补丁叫 recipes,管的是解锁 60 帧、分辨率缩放、特定画面问题的修正。拍这期的时候是 40 个,现在已经 58 个,每天都还在涨。所以“能不能跑”和“跑得好不好”是两件事,准确的说法是“能编译所有 Switch 游戏,其中一部分有专项优化”。

《霓虹白客》没有 recipe,它照样编译成功、照样启动,浮层显示 1290x720、60 帧、GPU 8.62 毫秒。这个案例划出了能力的底线:recipes 是加分项,不是准入门槛。

测试范围不小,结果是分层的:

  • 跑得好的:《怪物猎人崛起》(60 帧)、《圣兽之王》(原生版,此前只能模拟)、《勇者斗恶龙 11S》、《暗黑破坏神 2 重制版》;
  • 有瑕疵但能玩:《黑暗之魂重制版》,有顶点爆炸的画面错误,且连不上任天堂服务器所以只能单人;
  • 需要修:《最终幻想:共鸣》,画面有闪烁,这类问题通常会被后续 recipe 解决;
  • 确实没跑起来:《Doom Eternal》的 Switch 版。

兴奋之前,有三条边界必须摆在最前面。第一,移植里不含游戏本体,你得自己从自己越狱的主机导出,导出方法不提供。第二,这些项目大量使用了 AI 编码工具,这是最近几周同类项目集中爆发的重要原因,但在反编译社区里也有争议,理由是 AI 写的代码更难维护;好在项目是开源的。第三,性能不完美,有一个游戏确实没起来,只是绝大多数到了能玩的水平。

还有一点最容易被漏掉:nxnative 的首要目标不是 Mac,是 iPhone 和 iPad。仓库首页写得很明白,让你自己的 Switch 游戏在 iPhone 和 iPad 上原生运行,把游戏和 prod.keys 交给脚本,产出一个 IPA,侧载安装。Mac 版本更像是顺手带出来的,真正的主战场在口袋里。

往回看几年,Mac 玩家的处境是求人:求厂商出原生版,求他们看看 Apple Silicon 这块硬件,请愿发了一个又一个,回应的没几个。现在换了个方向,一个开源项目直接把 Switch 游戏编译成原生 Mac 应用,每天都有新游戏加进来。D2R 那个移植里还加了点击移动,这是 Switch 上原本没有的功能;现在还有一个 PR 在讨论渲染缩放和超采样选项。

至于能走多远,取决于两件事:recipes 会不会一直涨下去,以及 AI 写出来的这些代码有没有人接手维护。前者是热度问题,后者是寿命问题。