一个人不会写C++,却把160万行C++代码的老游戏搬上了iPhone。这件事听起来像是技术脱口秀的段子,但它确实发生了。
Ammaar Reshi,谷歌DeepMind旗下AI Studio的产品与设计负责人,上周末用Anthropic的Claude Fable 5,把2003年的经典即时战略游戏《命令与征服:将军零点时刻》原生编译到了iOS平台。战役模式、遭遇战、将军挑战赛,三种玩法全部能跑。跑的是真实引擎,ARM64原生编译,不是模拟器。
![]()
学诗歌出身的设计师,怎么盯上了一款比自己职业生涯还老的游戏?Reshi的职业轨迹跟程序员三个字八竿子打不着。大学读诗歌,毕业后在数据巨头Palantir做产品设计,之后跳到金融科技公司Brex当设计总监,又去AI语音独角兽ElevenLabs带品牌和产品设计。2024年加入Google DeepMind。一路画了无数设计稿,从没敲过一行C++。
但他有个习惯:拿AI做周末项目,每次都能在社区炸出水花。2022年底,他用ChatGPT写故事、Midjourney画插图,一个周末搞出一本儿童绘本《Alice and Sparkle》,插画师群体当场炸锅。这次工具换成了Claude Fable 5,目标从绘本换成了一个23年前的C++游戏引擎。不变的是他给自己的定位:自己不写代码,像将军一样给AI下指令。
被问到为什么谷歌的人要用Anthropic的产品,Reshi回答得很坦然:“你可以热爱AI这个领域,尊重竞争对手,同时全力去构建最好的答案。这是一场持久赛。”他还补充了一句:“我从不觉得有什么事是不可能的。只是时间和迭代的问题。”
这句“只是时间和迭代的问题”,落到技术层面上,是一条让人倒吸一口凉气的翻译链。原版游戏跑的是DirectX 8,整个引擎160万行C++。要在iPhone上用Metal渲染,中间隔着五层转换:DirectX 8转DXVK,DXVK转Vulkan,Vulkan转MoltenVK,MoltenVK再转Metal。每一层都是一次格式转换,每一层都可能丢帧、崩溃、渲染出满屏电子垃圾。
渲染只是第一关。原版的音频引擎Miles、视频解码器Bink、字体渲染GDI,全是Windows专属组件,得逐个替换成跨平台方案。Reshi一开始试的是Opus 4.8,没搞定。游戏移植的本质是构建、报错、诊断、修复、重新构建,循环几十次。这种需要跨几十个文件持续保持上下文的任务,正好打在了Fable的设计靶心上。换上Fable 5之后,第一次构建只用了40分钟。三种模式全部流畅运行,连原声音乐都完整保留。
画面跑通了,手指还没着落。即时战略游戏的鼠标键盘逻辑跟触屏完全是两个物种。手指按下的瞬间不能发送任何点击事件,得等手势识别完成才能判断是单选、框选还是双指平移。早期版本漏了这一步,双指滚地图时第一根手指会误触发左键点击,部队被随机派去送死。Fable为此重构了一整套原生触控方案:点选单位、拖拽框选、长按取消、双指滚动、捏合缩放,全是AI写的。
2003年的代码跑在2026年的硬件上,时代错位到处冒出来。引擎会根据显卡型号自动调画质,但它认识的最新显卡停在了2003年。看到“Apple A19 Pro”,查了一圈不认识,直接把纹理精度砍到最低。修复方法简单粗暴:首次启动时强制写入高画质配置,绕过自动检测。更隐蔽的bug藏了二十多年。纹理格式的回退逻辑写死了不带alpha通道的格式,小地图的迷雾层直接变成纯黑色块。PC上碰巧没触发,到了iOS上MoltenVK的格式支持不同,bug立刻暴露。
Reshi把这个项目开源在了GitHub上。但目前没有App Store版本,想装得自己配Xcode和Vulkan SDK,从源码编译再签名侧载。一个不会写代码的人做出来的东西,暂时只有会写代码的人能装上。而且就算装上了,还有坑等着。虽然PC版只要128MB内存,但五层翻译链每一层都有显存开销,iPad上长时间运行后会飙到3GB以上。iOS一旦内存压力过大,直接杀进程踢回主屏,没有任何警告。联机更不用想,2003年的引擎要求每台机器每一帧的浮点运算结果完全相同,不同CPU架构之间做不到。能玩的只有战役和AI对战。
《命令与征服》系列是EA旗下曾经最辉煌的即时战略系列之一,2003年的《将军:零点时刻》是巅峰。之后一路下坡,EA关掉了Westwood工作室,系列几乎停更。2025年2月,EA把C&C多款游戏的源代码以GPL v3协议开源,推动这件事的是Luke Feenan领导的游戏保存项目。开源名单包括Tiberian Dawn、Red Alert、Renegade和Generals/Zero Hour。唯独缺了《红色警戒2》,原因是EA把源代码弄丢了。
社区接住了桌面端,Reshi加上Fable 5补齐了移动端。一条新的游戏保存流水线正在成型:厂商开源加社区移植加AI编译。Reshi两天烧光了一整个Max订阅的配额,但他小时候玩过的那些老游戏,现在等着的不只是程序员,是任何一个能在凌晨两点还盯着屏幕说“再来一次”的人。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.