经典《3D弹球》无缘新版Windows,因64位移植BUG难以修复
微软揭秘经典《3D弹球》消失真相:因64位移植BUG无法修复,浮点数误差导致弹球穿透障碍,代码无注释难以调试,最终被移除Windows系统。怀旧玩家必看!
很多老PC用户对Windows自带的《3D弹球》记忆犹新,这款小游戏从Windows95开始预装,直至Windows Vista版本彻底从系统中消失。长久以来流传不少猜测,微软工程师Raymond Chen在博客文章当中公开当年真实原因,问题根源并不是版权,而是64位移植产生的程序BUG。
这款《3D弹球》原名《Full Tilt! Pinball》,由Cinematronics团队开发,代码本身并不归微软所有。
2000年初,团队需要把海量Windows代码从32位迁移至64位,适配Windows XP64位版本。移植完毕之后,《3D弹球》出现诡异故障:弹球会直接穿透桌面障碍物凭空掉落,游戏完全无法游玩。
故障来自碰撞检测逻辑里一处隐蔽的浮点数舍入误差,代码运行在64位环境运算结果发生改变。开发小组尝试修复,却陷入困境。游戏源码来自多年前的外部厂商,完全没有注释,微软内部没人读懂这套代码逻辑。RaymondChen描述:“我们甚至找不到碰撞检测器对应的代码位置。”
当时项目还有海量系统代码等待移植,上线时间迫近,没有充足时间逐行啃懂第三方游戏源码。管理层最终敲定方案,直接移除《3D弹球》,不再内置进后续Windows系统。Chen本人表示自己很喜爱这款游戏,但没有其他解决办法。
后续原开发公司Cinematronics连同发行商Maxis一并被EA收购,Space Cadet弹球桌相关授权也归于EA。微软并不掌握源码所有权,不能自行修复或是重制。时至今日现代Windows依旧没有原生《3D弹球》,怀旧玩家想要体验,只能使用爱好者社区制作的复刻版本。




