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

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


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

Как исследователь с опытом работы в области компьютерных наук и давним увлечением историей видеоигр, я считаю открытие Мартином К. Мартином ошибки в оригинальной игре Lunar Lander абсолютно захватывающим. История этого вышедшего на пенсию инженера-программиста, обнаружившего ошибку в телетайпной игре 55-летней давности, созданной старшеклассником, является не только свидетельством силы любопытства и решимости, но и напоминанием о богатой истории видеоигр.


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

Как исследователь, изучающий историю видеоигр, я очарован тем, как технологии и события прошлого повлияли на разработку игр. Одним из интригующих примеров является «The Lunar Landing Game», созданная Сторером на мини-компьютере PDP-8 с использованием языка программирования FOCAL примерно во времена лунной прогулки Нила Армстронга и Базза Олдрина в 1969 году. Эта игра предлагает захватывающий опыт, в котором игроки берут под свой контроль лунный корабль. спуск модуля на поверхность Луны, что требует от них тщательного контроля расхода топлива для плавной посадки. Каждые десять секунд им приходится принимать важные решения о том, сколько топлива сжечь.

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

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

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

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

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

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

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

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

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

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

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

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

2024-06-23 20:17