Рэймонд Чен рассказывает, почему 64-битная ошибка привела к полному удалению Pinball из Windows.
Рэймонд Чен рассказывает, почему 64-битная ошибка привела к полному удалению Pinball из Windows.

Windows XP стала последней версией Windows, в состав которой входила 3D Pinball, космическая игра, жившая в системе с 1995 года. Она исчезла с выходом Windows Vista, и долгие годы удаление связывали с юридическими проблемами. Настоящая причина оказалась куда прозаичнее. Это был баг, который никто не мог найти в коде, который никто не понимал, и всё это на фоне приближающегося дедлайна.

Историю рассказал Рэймонд Чен, инженер Microsoft, который больше трёх десятилетий работает над Windows и публикует заметки об истории системы в блоге The Old New Thing. Чен входил в команду, портировавшую Windows XP на 64-битную архитектуру, и присутствовал при удалении Pinball.

3D Pinball, запущенная в Windows 11
3D Pinball, запущенная в Windows 11

В редакции впервые запускали 3D Pinball на домашнем компьютере с Windows XP, вероятно, больше двадцати лет назад, и целые вечера проводили за этой игрой. Она была из тех программ, которые стояли на каждом ПК и ждали, пока занятия надоедят. Поэтому спустя десятилетия многие до сих пор вспоминают её, и тем интереснее выяснить, что же произошло.

Настоящая причина удаления Pinball из Windows

В записи 2012 года Чен объяснил, что юридические сложности не имели отношения к удалению Pinball, хотя многие предполагали обратное. Проблема проявилась, когда его команда портировала миллионы строк кода Windows с 32-битной на 64-битную архитектуру для Windows XP 64-bit Edition.

Windows XP 64 Bit edition. Изображение: Microsoft
Windows XP 64 Bit edition. Изображение: Microsoft

В 64-битной сборке по непонятной причине шарик в Pinball сначала опускался в пусковое устройство в начале игры, а затем просто проваливался сквозь плунжер и вылетал за нижнюю границу стола, как призрак, проходящий сквозь все объекты на своём пути.

Забавно, что из-за этого партии оказывались очень короткими: играть с шариком, который проваливался сквозь пол, было невозможно.

Чен вместе с коллегой пытался это исправить. Код за несколько лет до того написала сторонняя компания, в Microsoft никто до конца не понимал, как он работает, а большая часть была без комментариев. Им не удалось даже найти фрагмент, отвечающий за определение столкновений и удержание шарика на столе, не говоря уже об исправлении некой ошибки округления с плавающей запятой, которая всё ломала.

С миллионами строк кода, которые ещё предстояло портировать, и приближающимся сроком поставки команда Чена приняла решение. По его словам, они “не могли позволить себе потратить несколько дней на изучение кода и попытки понять, какая именно неочевидная ошибка округления с плавающей запятой ломает определение столкновений”.

Pinball убрали, потому что создатели игры не оставили комментариев в коде, а инженерная команда Microsoft решила не тратить дни на одну сломанную игру, когда приближался куда более масштабный релиз. Чена и его команду трудно в этом упрекнуть: по меркам своего времени это были одни из сильнейших инженеров.

Нельзя сказать, что Чену было всё равно. Он признавался, что это одно из немногих решений времён Windows XP, которое до сих пор его немного расстраивает. При этом одна из работ, которой он больше всего гордится в этой ОС, связана с Pinball: тогда он исправил игру, нагружавшую процессор на 100%.

В исходном коде не было ограничителя кадровой частоты. На современном на тот момент железе игра, по словам Чена, рендерила более миллиона кадров в секунду и полностью загружала процессор. Добавление ограничения в 120 кадров в секунду снизило нагрузку до 1%, и пользователи могли играть в Pinball без замедления ПК.

Код Pinball не принадлежал Microsoft

Игра начиналась как один из столов в Full Tilt! Pinball, выпущенной в 1995 году студией Cinematronics и изданной Maxis. Microsoft лицензировала только стол Space Cadet для пакета Microsoft Plus!, который вышел 24 августа 1995 года, одновременно с Windows 95.

Full Tilt! Pinball
Full Tilt! Pinball

Условия лицензионного соглашения не позволяли вернуть Pinball. Чен рассказал об этом в записи 2018 года, после того как команда Microsoft Garage тихо попыталась возродить игру, пересобрав рабочую 32-битную версию. Юридическая проверка исходного соглашения показала, что Microsoft имела право лишь поставлять игру в составе Windows и пакетов Plus! вместе с их преемниками, и не более. Выпуск игры отдельно или передача исходного кода в сделку не входили.

В дополнении 2022 года Чен уточнил, что сломанная сборка, на которой он тестировал Pinball, работала не на Itanium (процессоре, на котором в итоге вышла Windows XP 64-bit Edition), а на Alpha AXP. Это более старый 64-битный чип, который Microsoft использовала внутри компании, чтобы собрать и запустить 64-битную Windows ещё до появления Itanium.

Windows XP 64 bit. Изображение: Amazon
Windows XP 64 bit. Изображение: Amazon

Чен считает, что на Alpha к особенно серьёзному аварийному завершению привела ошибка режима округления в библиотеке времени выполнения C. Позднее её исправили по причинам, не связанным с Pinball, причём настолько тихо, что ему никто не сообщил, что игра снова работает.

У Windows 11 до сих пор нет собственного Pinball

Cinematronics и Maxis со временем были поглощены Electronic Arts, и лицензия, благодаря которой Microsoft когда-то поставляла Space Cadet Pinball, теперь завязана на компанию, не участвовавшую в исходной сделке.

Существуют фанатские ремейки, написанные с нуля, чтобы не наткнуться на те же юридические ограничения, что и команда Чена, но за почти два десятилетия официальной замены так и не появилось. И речь не о самой Pinball: есть ли в Windows 11 игра, из-за которой систему будут вспоминать с ностальгией через 20 лет?

Косынку удаляют, потому что Windows 11 уже не может называть её собственной
Косынку удаляют, потому что Windows 11 уже не может называть её собственной

Приоритеты Microsoft сместились в другую сторону. Набор предустановленных компонентов в Windows 11 делает эту версию одной из самых критикуемых в истории ОС.

Windows 10, которой уже десять лет, до сих пор вызывает тёплые чувства. В начале этого месяца издание первым сообщило, что фотография пляжа Варарики в Новой Зеландии с экрана блокировки снова стала вирусной, потому что путешественники специально приезжают в это место, и это делает систему более “человечной”.

У Windows 11 такого момента нет. Там нет ни Pinball, ни обоев или экрана блокировки, ради которых люди ехали бы в реальное место, ни чего-то ещё, что заслуживало бы таких воспоминаний.