Інженер на пенсії виявив 55-річну помилку в коді комп’ютерної гри Lunar Lander

Інженер на пенсії виявив 55-річну помилку в коді комп’ютерної гри Lunar Lander 1 Ігри

Інженер на пенсії виявив 55-річну помилку в коді комп’ютерної гри Lunar Lander

У п’ятницю інженер-програміст на пенсії Мартін С. Мартін оголосив, що нещодавно він виявив помилку в оригінальному фізичному коді комп’ютерної гри Lunar Lander під час роботи з програмним забезпеченням. Створена 17-річним учнем середньої школи на ім’я Джим Сторер у 1969 році, ця первісна гра відтворювала дію лише як оновлення статусу тексту на телетайпі, але вона підготувала основу для майбутніх версій.

Додаткова інформація

Давно минуло, DEC все ще керує світом комп’ютерів

Легендарна гра, яку Сторер розробив на міні-комп’ютері PDP-8 мовою програмування під назвою FOCAL, лише через кілька місяців після того, як Ніл Армстронг і Базз Олдрін здійснили свої історичні місячні походи, — дозволяє гравцям керувати спуском місячного модуля на Місяць. поверхні. Гравці повинні ретельно контролювати використання палива, щоб досягти м’якого приземлення, приймаючи важливі рішення кожні десять секунд, щоб спалити потрібну кількість палива.

У 2009 році, незадовго до 40-ї річниці першої посадки на Місяць, я вирішив знайти автора оригінальної гри Lunar Lander, яка тоді була переважно відома як графічна гра завдяки графічній версії 1974 року та аркадній назві Atari 1979 року. Коли я виявив, що Сторер створив найстарішу з відомих версій як телетайпну гру, я взяв у нього інтерв’ю та написав історію гри. Пізніше Сторер опублікував вихідний код оригінальної гри, написаний мовою FOCAL, на своєму веб-сайті.

Повернемося до 2024 року, коли Мартін — експерт зі штучного інтелекту, розробник ігор і колишній аспірант Массачусетського технологічного інституту — натрапив на помилку в коді старшої школи Сторера, досліджуючи те, що, на його думку, було оптимальною стратегією для посадки модуля з максимальною паливною ефективністю — техніка, відома серед Kerbal Space Programентузіасти, як “самогубець опік”. Цей метод передбачає вільне падіння, щоб набрати швидкість, а потім запалювання двигунів в останній можливий момент, щоб уповільнити швидкість настільки, щоб безпечно торкнутися землі. Він також спробував інший підхід — більш м’яке приземлення.

Читайте ще:  Nvidia відмовляється від спеціальних модулів G-Sync, щоб протистояти повсюдному поширенню FreeSync

Оголошення

«Нещодавно я досліджував оптимальний графік спалювання палива, щоб приземлитися якомога плавніше та з максимальною кількістю пального, що залишилося», — написав Мартін у своєму блозі. «На диво, теоретично найкраща стратегія не спрацювала. Гра помилково вважає, що посадковий модуль не торкається поверхні, хоча насправді це так. Заглиблюючись, я був вражений складною фізикою та чисельними обчисленнями в грі. Зрештою Я знайшов помилку: відсутній «розділ на два», який, здавалося, залишався непоміченим протягом майже 55 років.”

Питання поділу

Незважаючи на застосування стратегії приземлення, яка мала бути підручником, Мартін виявив, що гра непослідовно повідомляє про те, що посадковий модуль повністю оминув поверхню Місяця. Заінтригований цією аномалією, Мартін покопався у вихідному коді гри та виявив, що алгоритм приземлення ґрунтується на дуже складній фізиці того часу, включаючи ракетне рівняння Ціолковського та розкладання в ряд Тейлора.

Як згадувалося у цитаті вище, корінь проблеми полягав у простому обчислювальному недогляді — відсутність ділення на два у формулі, яка використовується для розрахунку траєкторії посадкового модуля. Ця, здавалося б, незначна помилка мала значні наслідки, спричинивши недооцінку часу, поки посадковий модуль не досягне найнижчої точки траєкторії, і неправильно розрахував посадку.

Додаткове читання

Найбільший стрибок, частина 3: тріумф і майже трагедія першої посадки на Місяць

Незважаючи на помилку, Мартін був вражений тим, що Стореру, який тоді був старшокласником, вдалося включити передові математичні концепції у свою гру, подвиг, який залишається вражаючим навіть за сучасними стандартами. Мартін звернувся до самого Сторера, і автор Lunar Lander сказав Мартіну, що його батько був фізиком, який допоміг йому вивести рівняння, які використовуються в ігровій симуляції.

Хоча люди роками грали та насолоджувалися грою Storer з помилкою, це свідчить про те, що реалістичність не завжди є найважливішою частиною переконливого інтерактивного досвіду. І, на щастя для Олдріна та Армстронга, справжня посадка Аполлона на Місяць не страждала від тієї ж проблеми.

Читайте ще:  Switch 2 не за горами, але Nintendo все одно анонсує новий аксесуар Switch

Ви можете прочитати більше про захопливу пригоду Мартіна з налагодження в його блозі.стор.>

V. Petrov
Оцініть автора
Watch And Tell
Додати коментар