把 1984 年的 C64 游戏《Below the Root》移植成 JavaScript

查看原文 HN 讨论

文章摘要

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 的小孩、刚读完小说好奇后续的读者,还是一个想给它重画像素或重谱芯片音乐的人。