В выпущенной в 1979 году игре обнаружился обидный баг

Из-за ошибки в коде игроки не могут нормально соревноваться

2 мин.
В выпущенной в 1979 году игре обнаружился обидный баг
Photo by Lorenzo Herrera / Unsplash

Инженер-программист Мартин Си Мартин сообщил об обнаружении бага в старой компьютерной игре под названием Lunar Lander, выпущенной более 55 лет назад и приуроченной к высадке корабля «Аполлон-11» на лунную поверхность. В игре имитируется космическая программа в текстовом варианте, так как в 1979 году не было возможности использовать хоть какую-то графику.

Игра была создана американским студентом Джимом Сторером на основе языка программирования Focal.

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

В соответствии с задуманной методикой энтузиаста, необходимо было обеспечить свободное падение космического аппарата в игре, чтобы он набрал необходимую скорость. Для этого требовалось отключить двигатели аппарата в самый последний момент, чтобы он безопасно приземлился.

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

Специалист выяснил, что посадка не происходила по той причине, что сама игра считала это невозможным по выбранной энтузиастом методике.

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

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

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


Ещё по теме:

Мы в Telegram, на Дзен, в Google News и YouTube