把 1984 年的 C64 游戏《Below the Root》移植成 JavaScript
文章摘要
Saul Pwanson(VisiData 的作者)把他童年最喜欢的一款冷门游戏《Below the Root》搬进了浏览器,打开网页就能玩,还附带地图、自动存档和一个写得相当用心的 About 页面。
原作值得先介绍一下。 《Below the Root》是 1984 年由 Dale DeSharone(当时署名 Dale Disharoon)设计并编程、Windham Classics 发行的游戏,登陆过 Commodore 64、Apple II 和 IBM PC。它的特别之处在于剧情:故事改编自美国儿童文学作家 Zilpha Keatley Snyder 的「绿天」三部曲(《Below the Root》《And All Between》《Until the Celebration》),而且不是复述小说,而是作为三部曲之后的第四个故事来写的——Snyder 本人参与了剧情和大量对白的创作,据她回忆,她把整个绿天世界摊在工作室地板上的一大张方格纸上画出来,先勾树木和枝干,再放上住宅、商店和神庙,然后设定可玩角色的属性和上百个 NPC 的应答。玩家从五个角色中选一个(成人或孩童、男或女,能力各不相同),在这个由巨树构成的世界里探索,用一件叫 shuba 的滑翔衣在枝干之间滑行,在叫 nid 的吊床里睡觉恢复体力,采 wissenberry 充饥,并用一种叫 pense 的心灵感应能力读取他人的情绪乃至想法。游戏里没有战斗,全靠探索、平台跳跃和解谜,一百多个画面构成了一张在当年极为罕见的开放世界地图。后来的评论者常把它视为 metroidvania 和 LucasArts 式指令菜单的早期先声。
移植的经过是这个帖子最有意思的部分。 作者说,IBM PC 版早就能在网上直接玩,但 C64 版本的素质好得多——没有抖动的色块、配色更好、音乐是多声部的。为了让 C64 版「一步就能玩到」,他 2013 年折腾过一次:做了一个可启动的 x86 ISO,里面塞了一个只跑 VICE 模拟器的 Linux unikernel,预配置好从一位德国黑客帮他破解的 .G64 磁盘镜像启动。花了大约四个月,结果他自己评价「一般般」——要开一整个虚拟机,声音是卡的,存档也麻烦,于是做了个简陋网页就搁置了。
十二年后他换了条路:让 AI 编码代理去拆解和反汇编原始的 .G64 镜像,产出一份规格说明,再据此生成一个与原作等价的 JavaScript 版本。他说「一个晚上大部分是自主完成的,做到了大约 75%」,剩下的靠他自己花了几十小时通关试玩、修 bug、调界面、写 About 页。他还坦言过程中「和 Claude 有过几次艰难的对话」,也做了一些「不受欢迎的决定」。成品的定位很清楚:美术、文本和音乐按原样完整保留,代码则换成了现代实现,加上了现代操控、自动存档和游戏内地图。除了游戏本身,站点还整理了一个相当扎实的资料页,收录原版说明书(Internet Archive)、计算机冒险游戏历史博物馆的盒装与地图照片、2024 年 Time Extension 对美术 Bill Groetzinger 的访谈、Hardcore Gaming 101 2012 年对 DeSharone 的访谈、以及多篇玩家回忆、评测、流程攻略,甚至还有一张受该游戏启发的氛围音乐专辑。
HN 评论精华
这条 Show HN 只拿到 4 分,评论区没有任何留言。一个把三十多年前的 C64 游戏完整复活的项目,在 HN 上没有掀起任何讨论——这里只能如实记录。
好在帖子正文本身就是作者写的一篇完整自述,信息量比多数评论区都大。有两点值得单独拎出来:
一是两次尝试的对比。 2013 年那条路(unikernel + VICE 模拟器 + 可启动 ISO)在工程上其实更「硬核」,但四个月的成果是一个需要 VMware、声音发卡、存档困难的东西;2026 年这条路把工作重心从「让模拟器跑起来」挪到了「把原始程序拆解成规格、再重新实现」,结果是一个点开网页就能玩、还能加地图和自动存档的版本。这是一个关于移植策略的样本:模拟保真但体验受限于宿主环境,重新实现成本高但能让老游戏获得现代的可用性——而反汇编加重写的成本,恰恰是近两年被 AI 代理显著压低的那一类。
二是作者的态度。 他自己给这个项目的定性是「不是什么大项目,本来也不该是」,目的只是分享一个童年的游戏和它的复原过程。About 页里那句话说得更直白:做这个游戏的人投入了很多爱,它值得被记住和欣赏——不管你是当年找过 trencher beak 的小孩、刚读完小说好奇后续的读者,还是一个想给它重画像素或重谱芯片音乐的人。