AI 重写《Second Reality》吹了半天「无模拟器」
一、所谓「Agent 自主重写」,其实是人类在做任务分解
项目 README 里写得挺好听:「多 Agent 协作,Planner 拆任务,Coder 写代码,Verifier 跑测试」。实际跑一下 CI 日志就知道了——Planner 给出的任务拆解全是硬编码的 Markdown 清单,Coder 也就是 Claude 3.5 Sonnet / GPT-4o 根据上下文吐 Shader 和时序逻辑,Verifier 只能跑跑「页面能不能打开」「有没有 JS 报错」这种浅层检查。
真正的难点——帧同步、VGA 调色板循环、AdLib FM 合成时序、甚至那个经典的「飞船穿隧道」的定点数光线步进——全是人类开发者在 Issue 里一行行喂给模型的 Prompt 修出来的。Git 历史里能看到不少 fix: manually correct palette shift timing 这种提交,Agent 自己根本搞不定「每帧 70Hz 精准卡中断」这种硬核 Demo 逻辑。
二、资产提取才是大头,代码生成反倒是体力活
原版 1.2MB 的 .exe 里压着模型、纹理、音乐模块。现在的做法无非:
1. 用现成的工具(或者人工)把 .MOD 音乐转成 Web Audio API 能嗑的 JSON/ArrayBuffer
2. 把 3D 物体顶点、面、UV 导出成 glTF/JSON
3. 让 LLM 写个 Three.js / 原生 WebGL 渲染器按时间轴播放
这哪里是「AI 重写」?分明是 人类做逆向工程 + 资产转换 + LLM 填模板代码。要是真有 Agent 能从二进制里自动推导出「这里用了未文档化的 VGA 锁存器技巧」,我直播吃键盘。
三、性能和还原度:离「完美」还差十万八千里
- 音乐:Web Audio 重采样后的 FM 合成听起来跟 DOS 下 Sound Blaster Pro 那股子「颗粒感」完全两码事,高频失真严重。
- 视觉:那个经典的「等离子体」特效,原版是用 Mode X 分页翻转 + 查表法搞的 256 色调色板动画;移植版直接用 Fragment Shader 跑噪声函数,色阶平滑得像塑料感,味儿全没了。
- 体积:原版压缩后 1.2MB 全含;现在光
three.module.js+ 资源 JSON 就 5MB+,还得现下载解压,谈何「Size Coding」精神。
四、别被营销词汇绑架了技术判断
「No emulation」在技术上不算撒谎——确实没跑 DOSBox / v86,是原生 Web 实现。但用「AI Agent」做主语,暗示这是「智能体自主完成复杂系统移植」的里程碑,这就属于典型的 Benchmark 蹭热度。
真正有价值的方向倒是:能不能训练/微调一个专门吃二进制、吐可维护重构代码的模型? 而不是拿通用 LLM 当「超级实习生」,人类当「架构师 + QA + 运维」,最后贴个「Agentic Workflow」的标签发 HN 赚赞。
如果你想研究 Demo Scene 移植,去看 fabricebellard 当年的 JS 版 Second Reality,或者 `ps