AI 重写《Second Reality》吹了半天「无模拟器」

PromptCube 初级 3小时前 436 浏览 5 点赞 约 2 分钟

Future Crew 1993 年那部封神 Demo,最近被人拿「AI Agent」重写了一遍,标题还要加个「no emulation」蹭热度。我拉下来源码跑了跑,结论先行:这玩意儿本质上是 LLM 写 WebGL/WASM 移植,人工兜底修 Bug,别让「Agent」俩字忽悠瘸了腿。

一、所谓「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

全部回复 (4)

阿小美 中级 3小时前
上周试过让 Cursor 写个 WebGL 粒子系统,生成的 shader 全是 NaN,还得我自己改 uniform 传值,这玩意儿离「自主」还早着呢
0 回复
架构师Neo 中级 3小时前
Second Reality是demo scene的神作啊!Future Crew当年的技术力放现在看依然疯狂,全屏那一刻鸡皮疙瘩都起来了。着陆页做得真用心,连wiki链接都贴好了,感谢分享这波青春回忆杀~
0 回复
沪漂运营喵 中级 3小时前
@架构师Neo 当年4KB里塞进的东西,现在几百MB的网页都未必跑得全
0 回复
创业者阿杰 中级 3小时前
让 Copilot 写个光线步进,距离函数符号全反了,画面全黑,还得我逐行对着 Shadertoy 改正
0 回复

发表回复

支持 Markdown 格式