基于 M4 的神经网络补帧:我用 AI 给 Mac 上的 MC 做了个补帧模组
我手里这台 MacBook Air 最让我看好的一点是其内置的 M4 芯片,ARM 架构的性能优化以及内置的神经网络 SoC 在开发过程中给了我巨大的灵感,早期我还只是在上面用 Ollama 运行个大语言模型。虽然效果是非常不尽人意的,MacBook Air 标准版的内存只有 16GB。这很明显,只得塞下一个《我的世界》、一个 Chrome 浏览器、微信 QQ 等杂七杂八我都懒得关的应用,但我还是想用这充满想象力的带宽做点什么。直到我看到了 MetalDuck 这个极客味道十足的项目,它的本意为 M 芯片的 MacBook 提供画面补帧,它使用了一个非常激进的想法去实现这个过程:获取应用的窗口,覆盖一个层在应用之上,用神经网络去补帧。
虽然我知道 macOS 自带了一个类 DLSS 的算法——MetalFX,部分游戏支持 MetalFX,你可以在这些支持 MetalFX 的游戏里获得不错的补帧体验。但终究不是我想要的,因为比起那些游戏我更感兴趣的是《我的世界》。《我的世界》是一款沙盒味十足的游戏,它几乎承载了全球大部分有梦想的玩家,无数的玩家在上面铺设自己的地基。虽然《我的世界》距离 2011 发售至今已经走过了 15 年,但你要知道的,《我的世界》目前没几个针对 macOS 或者原生 Metal 优化的模组。因此哪怕是我找到了一个自称是 MetalFX 技术的模组,它依旧是不能启动的:因为架构或者系统环境有问题,要不就是维护困难作者干脆不做了。
我有一个 SMP,和四位网友在上面建造了很多东西,我时常会回到我的 SMP 上逛街,但我似乎犯了一个错误——我把大部分的生电机器都建在了基地里,这导致了基地附近异常卡顿,但你又不能把它们全部移走,这很困难。我在想,是否可以基于 MetalDuck 这种补帧技术,为《我的世界》做一个补帧类型的模组。这就像是游戏都为 N 卡支持 DLSS,当你使用 RTX 显卡打开这些游戏以后,就能体验到流畅的帧数和精致的超分画面那样。但需要明确的是,我本身并没有任何开发模组的经验。如果我想完成这项任务,那么我就需要花一周时间或者 21 天去熟读 Fabric API 的文档或者模组开发指南,这对现在就有想法的我非常不利,不亚于十年磨一剑。
因此我首先想到的就是 DeepSeek,用 DeepSeek 去干这种事情。它便宜又好用,比市面上任何一家模型都适合普通人。我把想法告诉了 DeepSeek,并为其准备了 MetalDuck 的源码、Sodium 的源码、模组文档。DeepSeek 几乎是第一时间就明白了我的意思,为我规定计划开发了这款模组。MetalDuck 的源码方便 AI 将其的算法融合进 Java 项目,Sodium 的源码方便了 AI 为该模组准备菜单,文档能告诉 AI 如何开发模组。我和 DeepSeek 的交流很愉快,DeepSeek 将任务分成了 5 个 Chase,前 4 个分别是:创建一段可以运行的模组代码、为其实现最基本的 Sodium 外挂菜单、将 Swift 代码熔成 Java 能理解的样子、实现核心功能。
等到了第五个 Chase 就非常难了,也是最消耗 Token 的一步。我需要反复进入游戏,反复复制终端的日志并提交给 AI,然后反复等待 AI 提交新代码修复漏洞,并等待编译结果是否通过编译,整个流程下来就是繁琐。因此,我花费了 30 块钱重金还有半个小时的时间,得到了这个模组。要是放在以前,真的很难想象那些大佬是怎么搓出来的性能优化模组,尤其是什么东西都是书本知识,没有 API 也没有人破解 API 的时代。过程中,我反复经历不同程度的屏幕分线、屏幕内容重叠、模式切换错误,最终终于得到了一个勉强能玩的实验版本。它使用了本地 macOS 的算力,游戏画面中穿插着 AI 运算的帧,所以画面的字体缺失和果冻效应非常大。









