Windows Vista发布之际, 许许多多老用户发觉, 那个伴随自己多年的3D弹球游戏没了踪影, 微软工程师于近日 disclosure, 消失的真实缘由并非在网络上流传的版权方面的问题, 而是一桩让人意想不到的技术事故。
游戏失踪之谜
自1995年Windows 95预装3D弹球之事发起起始之后, 这类凭借Visual Productions予以开发的小游戏便已然成为了电脑方面用户所使用桌面标配, 是其必备了。其有着简单程度易于上手的操作表现, 以及带有老旧过去怀旧复古的风格, 致使它在发布以后经历的十几年时间里面一直以来都是Windows系统所具备的标志性应用。
好多玩家都惯于无聊之际把游戏打开放松放松, 可是到Vista系统推出来的时候, 大伙忽然发现自己熟悉的界面没了, 网络上马上出现了形形色色的猜测, 颇为流行的一种说法是版权纠纷致使游戏下架了。
然而, 微软的工程师Chen, 在博客里头, 将真相给揭开了。他讲, 真正致使问题出现的根源, 乃是一个技术方面的难题, 跟版权不存在任何的关联。这样的答案, 让好多人产生了意外之感, 并且, 还引发了众人对于技术背后所隐藏故事的强烈关注兴趣。
64位移植的噩梦
新世纪初, 微软着手为Windows XP的64位版本开展准备工作, Chen的团队领到了一项棘手任务, 要把数百万行代码从32位架构转移至64位环境。
3D弹球游戏, 同样处于移植清单之中。那时, 所有人皆认定这仅仅是常规性质的工作, 然而, 未曾料想到后续竟然会引发一连串的麻烦状况。其代码来源于外部的开发商Full Tilt!团队, 本身并不归微软所拥有, 是这样的情况。
更加麻烦的在于, 这些代码乃是多年之前所编写的, 不存在任何注释予以说明。Chen在后来回忆声称,他们所面对的是全然陌生的第三方源码,根本就不清楚其中具体撰写了些什么。
幽灵球bug困扰团队
移植结束之后, 团队察觉到了一个古怪的状况, 游戏里头的球会如同幽灵那般穿越桌面上的阻碍物, 径直掉落至台面之下, 平常的物理磕碰全然失效, 游戏根本没办法正常开展。
这个问题看上去好像简单, 然而实际上是难以去追踪的样子。团队使用了各种各样的方法去进行修复 , 但一直都找寻不到问题的症结究竟在哪里。球的运动轨迹呈现出特别诡异的状态 , 完全偏离了设计者预先的期望。
Chen于博客之中讲道, 他们连碰撞检测代码所处的确切位置都没办法确定。在有着数百万行数目的代码当中, 究竟是哪里出现了问题根本就毫无头绪可寻了。正是这样一种令人感到无从着力的无奈之感使得整个团队陷入到了困境之中。
找不到bug根因
剖析之后, 工程师察觉问题源头是个隐匿的浮点数舍入误差, 于64位环境里, 此误差表现与32位版本两样, 致使碰撞计算不正常。
尽管已寻得源于理论层面的缘由, 然而于实际层面的修复情形却显得毫无盼头可言。代码之中既不存在注释, 同时也欠缺针对运行机制予以阐释的文档, 团队在这种状况下仅能凭借猜测去探寻其中的逻辑关系, 如此这般方能继续推进后续工作。
陈国豪坦言, 他们即便是连碰撞检测器究竟在代码的哪一行都不可能寻觅到, 那种全然迷失方向的感悟, 致使修复工作根本无法推进, 时间一再拖延, 问题却一直毫无进展。
管理层最终决定
有现实压力摆在团队面前, 还有大量其他代码要移植, 截止日期正不断逼近, 没人有足够时间去逐行研读一个第三方游戏的老旧源码。
管理层做出了艰难决断, 决定放弃在后续版本里预装3D弹球游戏, 要把这个经典应用完完全全自Windows系统中移除。
在博客里, Chen他自己也讲了, 他特别喜欢这款游戏。然而, 面对实际存在的技术方面的困境, 以及时间上的压力, 放弃成了唯一可行的选择。此决定固然显得无奈, 可在当时来讲, 它是最为合理的一种方案。
经典无法回归
此后, 3D弹球游戏未曾再度回归Windows系统。原开发商Maxis随后被EA收购, Space Cadet桌面的授权也随即落入EA手中。微软方面一直都没有获得过源代码的所有权。
那就表明, 微软自身没能力去修复往昔的漏洞, 也没本事重新打造一款与之相似的游戏。玩家要是指望回味往昔经典, 当下仅仅能够凭借社区所制作的复刻版本来解解馋喽。
到如今, 距游戏消失已然过去了好些年, 好些老用户依旧对这个结果抱憾不已。针对这段技术背后所藏故事, 你有啥想要讲的呢? 欢迎于评论区去分享你的看法, 要是喜欢这篇文章, 记得点赞并且转发给更多有兴趣的朋友。