一次不祥的重聚

Lobsters Hottest 新闻

摘要

作者参加了自己的30周年大学同学聚会,观察到同龄人对人工智能影响未来的深切担忧,随后回忆了上世纪90年代与朋友们共同开发一款名为BattleTris的双人俄罗斯方块游戏的怀旧故事。

<p><a href="https://lobste.rs/s/urkvou/portentous_reunion">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/05/26 11:19

# 一次预示性的重聚 来源:https://bcantrill.dtrace.org/2026/05/25/a-portentous-reunion/ 我刚刚参加了我大学毕业三十周年的聚会,同龄人中有一些明显的趋势。其中最主要的是:对AI未来对我们以及我们(大致已成年的)孩子意味着什么的深切担忧。当然,许多代人在回顾自己大学本科后的三十年时,都曾怀揣对过去的怀念和对未来的忧虑,因此很难判断2026年在这方面是否真的非同寻常。而且,你当然不能辩称今天的未来焦虑是空前的:我母亲于1968年毕业,她总是很快提醒我,当时她的许多同学面临着失去大学延期入伍资格,并根据抽签号被征召参加一场不受欢迎的战争。尽管如此,2026年确实感觉独特:我与同届96级同学的每一次谈话似乎都绕回LLMs对知识工作产生的影响——以及对未来的焦虑。 除了LLMs,还有一个话题被提及了好几次(尽管仅限于一个显然小众且自我选择的群体)。这是一种对三十年前往事非常具体的怀念,而要解释它需要一些背景故事…… 1992年,我大学一年级时,我和朋友们都很喜欢玩Randall Cook开发的那款出色的Wesleyan Tetris (https://harddrop.com/wiki/Wesleyan_Tetris),也就是所谓的“混蛋俄罗斯方块”,它会通过插入方块、拿掉方块或类似的恶作剧让游戏变得困难——然后嘲笑你。我觉得制作一个类似灵感的两玩家俄罗斯方块会很酷——但不是电脑让你的生活变难,而是你的网络对手。1993年夏天,我决心编写一个我设想的版本:两名玩家在俄罗斯方块中决斗,积累金钱(通过清除行中的骰子),然后用这笔钱购买武器来搞乱对手的游戏(翻转他们的棋盘、让方块失控旋转、给他们形状怪异的方块等)。局域网当时在商业和大学环境之外并不常见,所以我用一根零调制解调器电缆连接了两台PC。那个夏天,我还有一个愿意做游戏测试的妹妹(谢谢,Libby!):她和我在科罗拉多州母亲的地下室里度过了夏天的大部分时间,听着U2的《Zooropa》,玩着我称之为BattleTris的早期版本。 秋天回到普罗维登斯时,我把游戏展示给了我的室友们。游戏立即大受欢迎(尽管只是本地范围内的!),我们决定在春季软件工程课程的期末小组项目中从头构建一个合适的版本。1994年初我们开始上课时,已经确切知道我们想做什么(而且已经构建过一次,知道一些设计挑战在哪里),于是我们在项目正式布置之前很久就开始工作了。到了学期末著名的演示日时,重新构想的BattleTris已经相当完善——并且引起了轰动:在我们的演示之后,似乎每个人都在玩我们创建的游戏。(这远在数码摄影普及之前,但我脑海中深刻的一幕是那天晚上走进Sunlab (https://blog.cs.brown.edu/2026/02/17/a-history-of-the-sunlab/)后面——看到每台电脑都在运行BattleTris。) 好消息是它相对完善;坏消息是它绝不是一个万无一失的系统——我们三个人手忙脚乱地修复漏洞。接下来的两年里,我们利用空余时间继续开发BattleTris(也玩了很多次)。BattleTris见证了我本科阶段的几个里程碑:我21岁生日时,室友们和我偷偷带了一箱啤酒到某个系统实验室,把BattleTris变成了一款饮酒游戏(一个我注定要输的游戏——而且确实输得很惨)。我毕业了,去Sun公司工作。BattleTris被留在了学校,但功能完好,依然存在。事实上,我们之后的新一代计算机科学学生发现并喜欢上了这款游戏。 我毕业将近三年后,收到了一封来自比我低几届的学生的邮件: ``` 发件人: [email protected] 日期: 1999年3月12日 星期五 16:45:31 收件人: [email protected], [email protected] 主题: BattleTris 我正在布朗大学组织一场BattleTris锦标赛。第一轮是公开赛,报名费5美元。奖金归优胜者所有。之后,前16或32名选手将晋级BattleTris邀请赛。我想知道你们是否有兴趣参加邀请赛并参赛。如果有,你们什么时候能方便来布朗大学停留一天?我们很希望你们能来。谢谢,也感谢你们制作了BattleTris。 -- Adam ``` 我未能参加Adam组织的锦标赛,但我很幸运地说服他于第二年夏天来Sun实习——然后2001年毕业后全职加入。2001年秋天,Adam在加州安顿下来,但他发现自己想念BattleTris;我们能在Sun复活它吗?当时游戏已近十年历史,有些毛刺需要打磨,但随着我们更多人一起合作,我们让它可以在Solaris x86(以及Solaris SPARC)上运行,并使用(相对)现代的X/Windows。在Sun内部,BattleTris受到了热烈欢迎:除了那些对在CIT决斗有美好回忆的布朗毕业生外,新玩家也发现了这款游戏。 在这些新玩家中,有一位来自Sun外部的重要人物:我的女朋友,她正在拖延博士论文,开始经常玩这款游戏。她……(措辞委婉地说!)并不是最好的BattleTris玩家,但她坚持不懈,慢慢提高了水平。她会和Sun里任何愿意玩的人对战,尤其和Matt Ahrens玩了好几局(非常)漫长曲折的游戏,而Matt当时正在那片后来被称为Pacific(后来成为ZFS)的绿色田野上拖延时间。她和我经常对战——而且(毫不意外地)我总是赢。好吧,几乎总是。 2001年晚秋的某一天,她向我发动了一套确实毁灭性的武器组合(记录一下:四乘四、坏掉的唱片、禁止滑动),我……死了。在另一个房间,她喊道:“嘿,游戏崩溃了。”我(可以想象!)非常沮丧——一言不发。她蹦蹦跳跳地走进我的笔记本电脑通过一根长以太网线(Wi-Fi还没普及!)连接的房间:“嘿,你听到了吗?我说游戏崩溃了。”“游戏没有崩溃,”我回答,“你……赢了。”“我……赢了?!”她说着,似乎激动得热泪盈眶。后来发生的事情有些模糊,但我记得我们好像在公寓里游行了一番,仿佛一位暴君终于被推翻了。当天晚上晚些时候,我和Adam聊了聊。“她赢了我一局,”我沮丧地说。“她……什么?!”我看得出来安慰的话是不会有了。我试图解释,但Adam打断了我:“你知道这意味着什么吗?这意味着她就是那个人——你必须娶那个姑娘。”虽然我愿意相信这与那局游戏无关,但事实是,我在2002年夏天向Brigid求婚了——现在她和我已经结婚二十多年(还有三个孩子!)了。 与此同时,BattleTris却被搁置了。我们正专注于DTrace的道路——接下来的几年里,这项工作变得极其耗费精力。生活也变得更加复杂,我们每个人都进入了新的阶段,背负着新的责任。又过了几年。我们想念BattleTris,但要让它再次运行越来越成为一个严肃的项目——而且2010年我们离开Sun后,这是一个令人望而生畏的项目:这个老旧的游戏需要移植到新操作系统(Linux和Mac)并适应现代环境。就个人而言,随着我的孩子长成青少年,我发现自己渴望BattleTris,哪怕只是为了和孩子们一起玩(嗯,打败他们)。但再次,还有很多其他事情要做(创立一家公司 (https://bcantrill.dtrace.org/2019/12/02/the-soul-of-a-new-computer-company/)!)——而BattleTris感觉已经无药可救地过时了。 快进到几周前。Adam和我在*Oxide and Friends* (https://www.youtube.com/watch?v=iSOdBO9I6q8#t=25m34s)上回忆BattleTris,讲述一些老故事。Adam和我毕业年份相同,我们大学的同学聚会也快到了。我们能不能……让它重新运行起来?上周的某一天,Adam让Claude着手处理这个任务,在令人震惊的短时间内,BattleTris的启动画面就出现了。Claude解决了一堆棘手的问题,进展喜人,但还没有完成。我接过来,让Claude把它移植到Linux。又是一堆繁琐的问题(包括调试发现的一个隐藏在我`.Xresources`文件 (https://en.wikipedia.org/wiki/X_resources)里的设置!),但Claude和我让它运行起来了。现在我们进展顺利:我已经让它在Linux上运行了——而且我有充分理由相信,只要我能找到第二个玩家,游戏本身就能运行。 与此同时,在同学聚会上,那个经常出现的怀旧话题现在可能并不令人意外,因为几位计算机系的同学走近我,问着同样问题的不同版本:“BattleTris后来怎么样了?”当我向他们展示我拍的笔记本电脑上的启动画面照片时,他们那种激动的心情,不亚于几十年后第一次见到同学,瞬间涌起无数回忆。不过,反应并不全是正面的:当我告诉两位好朋友——一对从大一最早就在一起,如今已把两个孩子抚养成人、一直很幸福的夫妇——时,反应截然相反。他反应:“天哪,我太爱那个游戏了。”她反应:“对,就是那个我们差点因此分手的游戏。”(!) 不过,我们还没有机会真正玩一下,但多亏昨天普罗维登斯的恶劣天气,我们有了机会,而且没花多长时间:Adam和我就开始玩二十年来第一局BattleTris (https://www.youtube.com/watch?v=sl8kGFqiGPc)。我们激烈的对战持续了几分钟,但结局很不光彩,二十年来第一局BattleTris以二十年来第一次BattleTris崩溃告终: ``` *** 检测到栈溢出 ***: 终止 中止 (核心已转储) ``` 关于核心转储的消息——结果发现——有点虚假:没有找到任何核心转储,除了Adam和我都在崩溃的瞬间释放了我们的全部武器库之外,几乎没有其他线索。没有更好的主意,我让Claude处理这个问题,令人惊讶的是,它找到了一个bug: > ● 我找到了一个可能的罪魁祸首——sendBoard分配了一个大小为sizeof(int)的栈缓冲区,但使用BTNET_PUTLONG写入,而后者使用sizeof(unsigned long)。在64位Linux上,这两者不同(4 vs 8),导致栈溢出。让我验证一下。 > ``` > 搜索了4种模式,读取了3个文件(按ctrl+o展开) > ``` > ● 找到了。在sendBoard (BTCommManager.C:352)中,缓冲区大小使用sizeof(int)(在x86-64上每个棋盘单元格4字节),但BTNET_PUTLONG写入每个单元格sizeof(unsigned long)字节——在x86-64 Linux上是8字节。BT_BOARD_HGT × BT_BOARD_WTH = 280个单元格,这意味着向1126字节的栈缓冲区中写入了2240字节——栈防护捕获到的1114字节溢出。 > > 这在原来的Solaris构建中不会触发,因为那是32位的(sizeof(unsigned long) == sizeof(int) == 4)。当武器如BT_CONDOR、BT_AMES或BT_ACE在方块放置过程中激活时,棋盘会被发送——这与“我们都扔了武器”的场景吻合。 哇!代码检查显示这确实是一个bug,但可能不是我们看到的那个:Adam告诉我他对我使用了什么武器,其中不包括任何会触发这个bug的武器(即允许你观察对手游戏的间谍武器)。我告诉Adam Claude发现了什么——它发现了一个bug,但可能不是那个bug?——Adam回答说,他实际上也部署了一个间谍武器:Claude发现的bug看起来很可能就是我们碰到的!我们迅速验证了间谍武器确实会引发故障,然后应用了修复,重新构建,重新开始游戏。这次游戏完整完成了。(说第一局谁赢了有点不妥,但只能说Adam后来扳回了一局。) 同时,同样毕业于布朗大学计算机系(并且是BattleTris爱好者)的Matt Amdur办完事回到了我们一起住的海边小屋。我们又玩了几局BattleTris,开了酒,拍了必要的自拍: battletris selfie 我们一直玩BattleTris到深夜。这是一个完美的重聚:无比有趣,无数美好回忆涌上心头。毫不夸张地说,这全靠Claude。是的,没有Claude的帮助我们当然也能让BattleTris运行起来(但过去二十年的事实清楚地告诉我们,我们不会!)。我们自己不会(没有!)做到的原因有很多:是的,这项工作既繁琐(又耗时),而且因为它如此不确定以至于完全是*推测性*的:在移植某物时(这实际上就是我们在做的,尽管尽可能轻量地移植到现代环境),很难向前看到进展。也就是说,你可能看似接近目标(却突然发现某个主要部分需要重新考虑)——也可能看似离得很远(感觉像一堆冒烟的残骸,有时只差一个修复就能让软件正常工作)。所以矛盾的是,这个无比人性化、充满欢乐的时刻,无疑是让我们担心会剥夺我们人性的东西带来的。 那么这种并置给我们留下了什么?正如我在Oxide RFD 576 (https://rfd.shared.oxide.computer/rfd/0576)中所述,我相信LLMs不过是一种工具,虽然是一种极其强大的工具。当我们不再相信这一点——当我们把它视作非人化的机械霸主时——我们就毫无必要地屈服于它。是的,LLMs意味着许多领域会发生改变,这些领域可能不习惯技术变革,是的,其中一些改变会让我们怀念过去的时代——但我相信我们共同的未来中还会有更多像BattleTris那样的体验:令人愉悦的人性化时刻,提醒我们当初为什么要建造这些。 至于BattleTris本身,是的,我们知道——而且请继续关注!

相似文章

被遗忘的LAN聚会艺术 (2023)

Hacker News Top

一篇探讨LAN聚会怀旧情结、其兴衰历程以及相较于现代在线多人游戏所提供的独特社交体验的评论文章。

我探索所有Tetris的旅程

Lobsters Hottest

来自Antithesis的一篇详细博客文章,描述了他们的软件测试工具如何用于探索并实现Tetris中的‘重生’(达到255级),在此过程中克服挑战并发现故障。

AI寒冬的回响 | netzhansa

Lobsters Hottest

这篇文章将20世纪80年代以Lisp机器和专家系统为中心的AI炒作周期与当前以LLM为主的AI热潮进行了对比,并警告了过度承诺和随后幻灭的历史模式。

怀念仅仅三年前的日子……

Reddit r/LocalLLaMA

一篇个人随笔,回顾过去三年AI的飞速演进:从早期ChatGPT和GPT-4的配额,到BabyAGI、DALL·E、语音克隆的登场。