Инженер-пенсионер обнаружил ошибку 55-летней давности в коде компьютерной игры Lunar Lander

Инженер-пенсионер обнаружил ошибку 55-летней давности в коде компьютерной игры Lunar Lander


Инженер-пенсионер обнаружил ошибку 55-летней давности в коде компьютерной игры Lunar Lander

Как наблюдатель с опытом работы в области компьютерных наук и увлечением историей видеоигр, я нахожу открытие Мартином К. Мартином ошибки в оригинальной игре Lunar Lander поистине захватывающим. Тот факт, что эта игра была создана старшеклассником по имени Джим Сторер еще в 1969 году, просто примечателен. Невероятно представить, как далеко мы продвинулись с тех пор в плане графики, вычислительной мощности и игрового дизайна.


В прошлую пятницу Мартин С. Мартин, бывший инженер-программист, вышедший на пенсию, сообщил, что во время недавней работы с кодом он наткнулся на ошибку в физическом программировании самой ранней версии игры «Lunar Lander». Эта новаторская игра, разработанная Джимом Сторером, 17-летним студентом еще в 1969 году, отображала на телетайпе текстовые обновления по мере того, как игроки совершали действия, однако она заложила основу для последующих более продвинутых версий.

Как технический энтузиаст, я в восторге от новаторского творения Сторера, которое воплотилось в жизнь на миникомпьютере PDP-8 с использованием инновационного языка программирования FOCAL всего через несколько месяцев после исторической высадки Нила Армстронга и Базза Олдрина на Луну. В этой игре вы сядете в кресло капитана лунного модуля и поручите деликатному спуску на поверхность Луны. Ваши навыки управления топливом подвергаются испытанию: вы принимаете важные решения каждые десять секунд, тщательно контролируя количество сожженного топлива для мягкой и безопасной посадки.

Еще в 2009 году, когда мы приближались к 40-летию исторической высадки на Луну, я приступил к миссии по выяснению истоков культовой игры «Lunar Lander». С теплыми воспоминаниями о ее графических версиях конца 70-х, особенно о популярной версии 1974 года и аркадной игре Atari 1979 года, я был полон решимости раскрыть историю возникновения этой классической игры.

Инженер-пенсионер обнаружил ошибку 55-летней давности в коде компьютерной игры Lunar Lander

В 2024 году Мартин, опытный специалист по искусственному интеллекту, разработчик игр и бывший научный сотрудник Массачусетского технологического института, столкнулся с проблемой в школьном коде Сторера, когда настраивал метод достижения максимальной эффективности использования топлива в «Космической программе Кербал». Этот подход, популярный среди энтузиастов под названием «самоубийственный ожог», предполагает свободное падение для набора скорости перед запуском двигателей в последнюю секунду для мягкого приземления. Мартин также экспериментировал с более плавным методом приземления.

Как исследователь, в своем последнем сообщении в блоге я углубился в поиск наиболее эффективной последовательности сжигания топлива, чтобы обеспечить мягкую посадку с максимальным остаточным топливом. К моему удивлению, теоретически идеальный подход оказался неэффективным в игре. Я был ошеломлен сложностью физики и сложными численными расчетами, встроенными в симуляцию. После тщательного расследования я обнаружил скрытую ошибку: забытую операцию «разделить на два», которая, по-видимому, оставалась незамеченной в течение примерно 55 лет.

Вопрос разделения

Инженер-пенсионер обнаружил ошибку 55-летней давности в коде компьютерной игры Lunar Lander

Хотя Мартин тщательно следовал стандартной процедуре посадки на Луну в игре, он был удивлен, узнав, что симуляция ошибочно сообщила о нескольких пропущенных посадках. Очарованный этим неожиданным сбоем, Мартин углубился в кодовую базу игры и обнаружил, что в ее алгоритме приземления использовались передовые физические модели того времени, такие как уравнение ракеты Циолковского и разложение в ряд Тейлора.

Анализируя ситуацию, описанную в цитате, я определил фундаментальную математическую ошибку как первопричину проблемы. В частности, отсутствие деления на два в формуле, используемой для определения траектории спускаемого аппарата, привело к серьезным последствиям. Эта, казалось бы, незначительная оплошность привела к тому, что моделирование недооценило время, необходимое посадочному аппарату для достижения самой низкой точки, и, как следствие, привело к ошибочным расчетам приземления.

Как любитель игр и математики, я был поражен, когда встретил старшеклассника по имени Сторер, который умело интегрировал сложные математические концепции в свое творение — игру «Lunar Lander». Это достижение произвело на меня впечатление, и это впечатление со временем только усилилось. Заинтригованный, я обратился напрямую к Стореру и был поражен, когда он рассказал, что его отец, физик, сыграл решающую роль, помогая ему вывести уравнения, используемые в симуляции игры.

Как исследователь, изучающий влияние игрового реализма на вовлеченность пользователей, я столкнулся с интересным наблюдением. На протяжении десятилетий игроки были очарованы игрой Сторера, несмотря на наличие известной ошибки. Эта ситуация подчеркивает тот факт, что абсолютный реализм не обязательно является ключевым ингредиентом для создания захватывающего интерактивного опыта. Положительным моментом является то, что во время исторической высадки Аполлона на Луну Олдрин и Армстронг не столкнулись с такой проблемой в своей реальной миссии.

Вы можете прочитать больше об захватывающем приключении Мартина в области отладки в его блоге.

Смотрите также

2024-06-15 03:25