谁不知道 SimCity,从 1989 年开始的传奇建筑策略,背后是设计师 Will Wright 和工作室 Maxis。 SimCity 系列在今天仍然很受欢迎,在九十年代也没有什么不同。 程序员兼作家乔尔·斯波尔斯基(Joel Spolsky)多年前透露,最初的模拟城市(以及微软本身)可能由于固有的错误和 Windows 95 操作系统的出现而崩溃,但由于一个有趣的补丁,它最终没有发生。
Microsoft Windows 95 中有一段特定的代码可以检查 Sim City 是否正在运行,因此 Win95 可以更改内存的存储方式以解决 Sim City 中的错误(来源 https://t.co/Ps1A9wGP6a) pic.twitter.com/lfZJX9OgEQ
— 卡尔(@Kalyoshika) 2022 年 10 月 6 日
事实上,这并不是新信息,正如 Spolsky 22 年前在他的博客中所描述的那样。 Spolsky 于 1991 年至 1994 年间在 Microsoft Excel 团队工作,因此他对此事有第一手的了解。 此外,游戏程序员向他吐露了这个漏洞。 Spolsky 在文中声称,微软依赖于其操作系统的向后兼容性,这通常意味着频繁地修改代码以使兼容性成为可能,这在 Windows 95 的开发过程中也考虑到了这一点。“Windows 95? 没问题,”Spolsky 在 2000 年 5 月 24 日发表的旧博文中写道。“不错的新 32 位 API,但旧的 16 位软件仍然运行良好。 微软对它很着迷,花了很多钱测试他们能找到的每一个旧程序。”
然而,模拟城市可能存在问题,因为为 Windows 3.x 编写原始模拟城市的程序员乔恩罗斯在游戏代码中制造了一个错误,释放的内存被重新加载。 由于这个错误,游戏无法在新操作系统上运行。 在 Windows 95 beta 中测试 SimCity 时也证实了这一点,当时游戏根本无法运行。 然而,该漏洞被发现,并且由于无法修复游戏本身(或将修复交付给玩家),因此在 Windows 95 中添加了一个特定代码,SimCity 在计算机上查找该代码。 当游戏启动时,系统注册了它,并根据添加的代码,特殊模式下的内存分配器确保内存不会立即释放。
刚做了。 太酷了。
一个我仍然拥有的游戏的例子——FF7——如果它看到它在 Win NT 而不是 Win95 上运行,它将彻底死掉,所以 Windows 是基于某些文件的存在而存在的 pic.twitter.com/Wc08tSffcz
— 🖥️ & 🍻 (@code_and_beer) 2022 年 10 月 6 日
因此,流行的 SimCity 成功地在向新操作系统的过渡中幸存下来,微软并没有放弃其在向后兼容性方面所做的努力。 “正是这种对向后兼容性的痴迷让人们愿意切换到 Windows 95,”Spolsky 在他的 SimCity 部分总结道。 这个有趣的故事多年后才曝光 由游戏开发商和播客 Kal Yoshika 拉动,谁在他的推特上分享了它。 在这条推文下方,一位昵称 code_and_beer 的评论者添加了另一种有趣的方式来保持游戏运行。 换个说法,这里指的是《最终幻想 VII》,当时游戏不想在 Windows NT 上运行,所以文件基本上是在撒谎,假装是 Windows 95。或者这就是在更新之前解决错误的方式,而这些绝对不是个别案例。 然而,《模拟城市》的故事基本上是在长达 22 年后才被发现的这一事实表明,这些干预和救援行动鲜为人知,尽管它们的发起者无疑值得称赞。