Why was Pinball removed from Vista

三维弹球可以算是我的童年回忆之一。当时 Windows 自带的几个小游戏(纸牌,空当接龙,蜘蛛纸牌等),三维弹球是画面最酷炫的。

只是 XP 之后似乎就没有再见过三维弹球,我曾以为是盗版 Windows 打包时移除了这个功能,今天阅读了 Raymond Chen 的博客 The Old New Thing. 发现三维弹球已经被删除了,其中还有段有趣的历史 :joy:

翻译

三维弹球小游戏自 Windows 95 开始被包含在操作系统里, Windows XP 是最后一个保留它 的 Windows 客户端版本。有人猜测这是因为某些法律方面的原因。

并非如此。

我在为 Windows XP 工作时,曾把几百万行级别的 Windows 代码从 32 位操作系统移植到 64 位操作系统上,以便我们的 Windows XP 64 位版本能够搭载运行这些代码。但有一个程 序却让我们陷入了困难,这个程序就是三维弹球。64 位版本的三维弹球有一个很讨厌的 bug:弹球会像个幽灵一样穿过所有物体。举个例子,当你开始游戏时,弹球会被送到弹射 版上,然后直接穿过弹射版掉了下去。这游戏就太短,没法玩了。

我们当中的两个人试图通过调试这个程序来找出究竟发生了什么。但这代码其实是在数年前 交给一个外包公司写的,而且 Microsoft 里没有一个人曾了解过这些代码是怎么工作的 (更别说现在仍然了解了)。此外,这些代码的绝大部分都完全没有任何注释。我们无法简 单的找出碰撞检测器代码为何不工作,见鬼,我们甚至找不到碰撞检测器代码位于哪里!

我们仍有几百万行的代码需要移植,因此花费时间来学习代码,尝试找出是哪一个不被人所 理解的浮点舍入错误导致了碰撞检测器失效,是不现实的。最后我们作出了行政决定,把三 维弹球从 Windows 产品中移除。

如果我说的这些能让你好受一些,其实我和你一样对删除三维弹球感到难过。我真的很喜欢 玩那个游戏。他也是我最引以为豪的 Windows XP 功能之一。

更新:致所有希望得到这部分代码的人:这部分代码被另外一间公司持有版权,如果你想要, 你得去问他们。

1 个赞

意思就是外包出去的代码看不懂 :rofl: :rofl: 微软的老哥太忙了不想 debug。

记得是64位和32位系统的运算精度差异,引发弹球计算数据出现问题

第一反应:那还不改开源一波?

哦,标准回复:我们不直接拥有版权所以不能开

那第二反应:存时间胶囊里等版权过期呗

没想到这玩意还有后续……今天和 ArchLinux CN 的 Telegram 群组上的群友讨论这个事,一位群友给我看了一个 youtuber 挖掘三维弹球被移除的原因的视频,真相和 Raymond Chen 所述说的故事差距有点大。

视频链接如下:

此外,还有 David Garage 对此的解释,David Garage 也曾为微软工作,把 32 bit 的游戏 port 到 64 bit 系统上。

TLDR

Raymond Chen 没有骗你,通过反向工程把一个 32bit 版本的三维弹球的 FPU 精度改为 64 位,就会出现 Raymond Chen 提到的“弹球穿越弹射板”的bug. 但他说的不完全对。

Windows XP 支持很多架构,比如 Intel 的安腾(IA64),以及 AMD64(我们现在的 x86_64)等等。微软在 Windows XP 64位操作系统的安装清单里移除了三维弹球。但是,安装光碟里面还有这些文件,甚至微软的工作人员曾在 AMD64 架构的 Windows XP 上的测试 build (代号 Longhorn)里面修复了三维弹球的 bug。

David Garage 则在他视频的评论区说,一个特性不可能某些架构有而另一些架构没有,当时三维弹球某个架构上有 bug 且无法修复,因此就决定把它移除了

2 个赞

真可惜,当年刚接触电脑的时候啥也不会,就知道玩这个游戏。 :grinning_face_with_smiling_eyes:

有人逆向了 pinball 的源码,然后用 SDL 重新实现了一个跨平台的

2 个赞

游研社的一篇介绍三维弹球的文章中有Raymond Chen模仿Bill Gates经典姿势的照片 WinXP当年捆绑的《三维弹球》,其实在Win95里就有了 - 游研社 。在Windows 10里面玩三维弹球的话,可以从 How to Install 3D Pinball Space Cadet on Windows 11 下载。其他几个游戏(蜘蛛纸牌、纸牌、空当接龙、扫雷等)可以从 Get Windows 7 games for Windows 10 下载。

需要提一下的是,Windows的嵌入版(Windows Embedded Standard)是不带游戏的,比如说分析化学上用的一些大型仪器,厂家会配一个台式机,里面装的操作系统有可能是Windows的嵌入版,然后就玩不成游戏了。这种情况下,即使是Windows 7,也是啥游戏都没有。

2 个赞