3D Pinball: Space Cadet — одна из классических игр, включённых в ранние версии Windows. Впервые она появилась в составе Microsoft Plus! для Windows 95, а затем поставлялась вместе с операционной системой вплоть до Windows XP. Однако Дэйв Пламмер, разработчик, перенёсший игру с Windows 95 на Windows NT, признался на своём YouTube-канале, что случайно допустил ошибку, из-за которой игра могла запускаться с частотой до 5000 кадров в секунду.
Во время эфира его соведущий зачитал вопрос: «Бывали ли у тебя программные “ляпы” во время работы в Microsoft, которые попали в официальные релизы?» Пламмер ответил, что таких случаев было немало, но один из самых запоминающихся — перенос 3D Pinball на NT. «Я написал собственный движок вокруг оригинального игрового движка, чтобы управлять отрисовкой, звуком и прочим. Но в моём движке была ошибка: он просто рисовал кадры максимально быстро, насколько это возможно», — пояснил он.
На момент разработки Пламмер использовал одноядерный процессор MIPS R4000 с частотой 200 МГц, что обеспечивало стабильные 60–90 FPS — вполне приемлемо для того времени. Однако он не добавил ограничитель кадров, и с появлением более мощных процессоров в 2000-х годах игра начала использовать целое ядро процессора, чтобы беспрерывно запускать пинбол.
В результате Space Cadet мог работать с частотой до 5000 FPS, поскольку современные процессоры значительно превосходили те, что использовались при портировании. К счастью, коллега Пламмера — Рэймонд Чен — устранил проблему, ограничив частоту до 100 FPS и избавив систему от чрезмерной нагрузки.
Хотя в Microsoft серьёзно относятся к багам, этот оказался достаточно безобидным, чтобы вызвать у разработчиков скорее улыбку, чем тревогу. В эпоху, когда компьютеры оснащались «турбо-кнопками», подобная ошибка не вызвала бы проблем, но с тех пор большинство программ перестали привязывать шаги времени к тактовой частоте. Пламмер не мог предвидеть столь стремительного роста производительности CPU, и это вполне объяснимо, учитывая темпы технологического прогресса того времени.
Оригинал
Уникальность