当前位置:
AIGC文章详情

微软今天说清了《三维弹球》被删的原因:不是版权问题,是代码烂到没人看得懂——故事还有两个反转,想重玩有三条路

源自21位全网作者

00:40

8月22日,#微软回应为何删三维弹球#冲上热搜,评论区瞬间变成大型怀旧现场,不少人想起微机课上偷偷开小差的下午。但翻翻讨论就会发现,直到今天,还有大批人在重复那个流传了十几年的说法:当年肯定是版权出了问题才删的。微博

微软今天说清了《三维弹球》被删的原因:不是版权问题,是代码烂到没人看得懂——故事还有两个反转,想重玩有三条路

这个答案这次终于可以盖棺定论了,因为拍板删掉这款游戏的人——微软资深工程师Raymond Chen,早就把来龙去脉写在了博客里。真相有点反常识:跟版权没关系,就是代码烂到微软内部没有一个人看得懂。

弹球像幽灵一样穿桌而过,微软当场拍板:砍了

事情要追溯到本世纪初。微软当时正在开发64位版Windows XP,需要把数百万行32位代码移植到64位,推进到《三维弹球》时,一个非常诡异的Bug出现了。游戏开局后,弹球会正常落入发射器,然后像幽灵一样直接穿过弹簧,从球桌底部掉了出去,每一局都短得离谱。The Old New Thing博客

Chen和同事试着去修,结果越查越绝望。这款游戏的代码是多年前由外部公司Cinematronics写的,绝大部分代码连注释都没有,微软上下没有一个人真正理解它是怎么跑的。他们甚至找不到碰撞检测的代码在哪,更搞不清到底是哪个浮点数舍入错误让弹球直接掉穿桌面。微博

而当时后面还有几百万行代码排着队等移植,64位XP的发布日期已经迫在眉睫。微博于是团队当场拍板:把《三维弹球》从产品里砍掉。The Old New Thing博客用今天的话说,这是一次教科书级别的技术债爆雷——不是不想还,是真没人还得起。

删掉它的人,恰恰是最舍不得它的那个

先交代下这款游戏的身世。《三维弹球》最初发售于1995年,由Cinematronics开发、Maxis发行,完整版游戏里其实有三张弹球桌,微软只买下了其中"太空军校生"(Space Cadet)这一张的授权,放进Microsoft Plus!扩展包,之后跟着Win2000、XP等经典系统预装,成了无数人的电脑启蒙玩具。微博

最有意思的是,亲手送走这款游戏的Chen,恰恰是微软内部最爱它的人之一。他说过,自己在Windows XP上最自豪的成就,就是修好了《三维弹球》的CPU占用问题。原版游戏的渲染逻辑是能画多快画多快,在当年的新硬件上帧率直接飙过一百万帧每秒——代码里的帧率显示只预留了两位数字,显然作者根本没想过能跑到这个量级。The Old New Thing博客

Chen给游戏加了个120帧的帧率上限,CPU占用直接从100%降到1%。按他的说法:现在你可以在等文档打印的时候玩两把弹球,而不会拖慢打印速度。一个工程师对老游戏的爱,大抵就是这样。

反转一:它其实被悄悄复活过,只是没人告诉他

接下来是这个故事里最反直觉的部分。Chen一直以为自己亲手终结了《三维弹球》,但事实是:在他把游戏砍掉之后,C运行时团队修掉了一个默认舍入模式的兼容性Bug(也可能是编译器团队修的编译器Bug),有同事回头重新测试了《三维弹球》,发现一切正常,于是又把它悄悄放了回去。The Old New Thing博客

也就是说,后来发布的64位版XP里,其实装着这款游戏,而做出删除决定的Chen本人对此毫不知情,一直以为它已经永远消失了。甚至有较真的复古计算爱好者NCommander,把能找到的64位Windows挨个装了个遍做验证,证实Chen讲的那次严重事故发生在早期跑在Alpha AXP机器上的开发版里。The Old New Thing博客故事经得起考古。

反转二:微软后来真想复活它,这次真被版权卡住了

这才是整件事最讽刺的地方:《三维弹球》当年不是因为版权被删的,可微软后来真心想把它带回来时,却被版权结结实实地挡在了门外。

2018年,Chen透露微软内部曾有一个Garage项目(员工自发兴趣项目),想把《三维弹球》复活,思路很保守——不碰修不好的64位版,直接把能用的x86原版重新打包发布。结果走到法务审查这一步卡住了:1994年签的授权合同,只允许把游戏随Windows 95、Plus!扩展包及其后续产品一起分发,没有单独发布这一项,源代码同样不允许公开。The Old New Thing博客

一句话总结:删它的是技术债,拦它复活的是老合同。微软官方这条路,从两头都堵死了。

微软没做完的事,开源社区做了

官方放弃的二十年里,玩家们没打算让这款游戏就这么消失。2021年,开发者k4zmu2a在GitHub上启动了SpaceCadetPinball项目,用Ghidra和IDA把XP版pinball.exe逐行反编译成了C++源码,并以MIT协议开源。GitHub

这个项目如今已经攒下超过4500颗星,本体支持Windows、Linux、macOS,社区移植的名单更是离谱:Switch、Wii、Wii U、3DS、NDS、PS2、PS Vita、Dreamcast、Android、webOS智能电视,甚至AmigaOS。GitHub

微软今天说清了《三维弹球》被删的原因:不是版权问题,是代码烂到没人看得懂——故事还有两个反转,想重玩有三条路

顺带说一句,原版游戏本身也没那么脆弱:当年出问题的只是64位移植版,32位的x86原版一直是好的,放到今天的Windows 11上照样能跑。这也是为什么从老XP安装盘里抠出pinball.exe,一直是老玩家圈子里的标准怀旧操作。社交平台上甚至还能看到有人晒弹球主题的木质拼装模型、在游戏里复刻弹球地图——这款游戏的生命力,比微软自己预想的长得多。

微软今天说清了《三维弹球》被删的原因:不是版权问题,是代码烂到没人看得懂——故事还有两个反转,想重玩有三条路

想找回童年?三条路给你

  • 懒人党:直接打开浏览器,搜社区做的SpaceCadetPinball网页版(Emscripten移植),点开即玩,手机也能玩,零安装成本。

  • 动手党:去GitHub克隆SpaceCadetPinball项目,自己编译或找现成的发布版,Windows、Linux、macOS都行;注意项目本身不含原版游戏资源文件,需要自己找齐。

  • 原味党:网上有从老XP系统里提取游戏文件、在Win11上直接运行的教程,技术上一路绿灯。但要提醒一句,按Chen披露的授权条款,这款游戏并不允许独立分发,相关资源一直处于灰色地带——自己怀旧可以,别二次传播。

最后想说,一款1995年的游戏,被砍掉二十多年后还能冲上热搜,靠的不是微软的情怀,是一代代玩家不肯放手。下次再有人跟你说三维弹球当年是因为版权才没的,把这篇文章甩给他。

内容由AI生成
0
扫一下,分享更方便,购买更轻松
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

最新文章 热门文章