Сможет ли он запустить Doom? Мое путешествие через ад, чтобы узнать, почему ответ всегда «да»
Мем «Can it run Doom», имеющий многолетнее наследие, является одним из старейших и самых любимых шуток в Интернете. Но это переросло в нечто большее. Это обряд для начинающих разработчиков.
Прогуляйтесь по тому, что в последнее время стало моим любимым субреддитом, r/itrunsdoom , и вы увидите, как факел доблестно несут вперед по сей день. Поскольку It Runs Doom! Страница Tumblr перестала публиковать обновления около года назад, сообщество Reddit выросло до более чем 100 000 участников, которые публикуют сообщения и реагируют на портирование Doom практически на что угодно. Калькуляторы, терминалы для кредитных карт — конечно. А также Nintendo Alarmo , RS Media Robot 2006 года и мультиплеер Pioneer DJ . И это только за последние пару месяцев.
Чем глубже я погружался в странные порты Doom , тем больше я начинал задаваться вопросом, откуда возникла эта идея — и, что более важно, почему это вообще возможно. Чья это была абсурдная идея? Чтобы раскрыть эту историю, мне нужно будет покопаться в адских анналах истории Интернета 1990-х годов и поговорить с некоторыми из хакеров с дикими глазами, которые поддерживают эту традицию сегодня.
Почему Дум?
Наша история начинается не в 1993 году, когда был выпущен Doom . Оно начинается четыре года спустя, в 1997 году. 23 декабря того же года, за два дня до Рождества, id Software выпустила исходный код Doom. Вдохновитель Джон Кармак, который сам написал исходный код, написал письмо сообществу, которое до сих пор существует на странице GitHub для Doom. Да, даже сегодня, даже после того, как такая огромная корпорация, как Zenimax, поглотила id Software (Zenimax тогда была поглощена Microsoft), исходный код Doom все еще существует.
«Я не могу точно предположить, сколько людей будет этим заниматься, но если будут реализованы значительные проекты, было бы здорово увидеть уровень сотрудничества сообщества», — написал Кармак в письме. «Я знаю, что большинство ранних проектов будут представлять собой грубые хаки, выполненные изолированно, но был бы очень рад увидеть скоординированный сетевой выпуск улучшенной, обратно совместимой версии Doom на нескольких платформах в следующем году». Кармак даже предоставил читателям несколько потенциальных идей для проектов.
Сообщество немедленно приступило к портированию Doom . Я имею в виду это буквально. Первый порт исходного кода Doom, DOSDoom, был опубликован в тот же день, когда был выпущен исходный код. Вы все еще можете скачать его сегодня . Исходный исходный код, опубликованный id Software, предназначался только для версии Doom для Linux. Код DOS был недоступен из-за библиотеки звуков, защищенной авторским правом. «Ух ты, это была ошибка», — написал Кармак в своем письме. «Теперь я пишу свой собственный звуковой код».
Отсюда следует чрезвычайно плотная и сложная генеалогия исходных портов Doom , которая ведется десятилетиями. Буквально в прошлом году появился форк другого исходного порта под названием PrBoomX . Честно говоря, эта генеалогия выходит за рамки данной статьи. Для освещения только этого потребовалась бы статья на несколько порядков больше, чем эта. Я хотел узнать о странных вещах.
К счастью, вскоре все стало странным. Самая ранняя странная версия Doom , которую мне удалось найти, была для графического калькулятора Texas Instruments TI-82, который был загружен на ticalc.org 12 апреля 1998 года . Он написан на языке Basic, поэтому это не столько порт, сколько дрянной клон. Но даже 26 лет назад был интерес к тому, чтобы Doom работал на платформах, для которых он не предназначался.
В течение следующего десятилетия или около того в Интернете мало что останется, чтобы показать, как Doom работает на этих странных платформах — я имею в виду, что YouTube даже не начал работать до 2005 года. Вероятно, было много «грубых хаков, сделанных в изоляции, Однако, как и предсказывал Кармак. В 1998 году было выпущено несколько камер с операционной системой DigitaOS, и, как несколько лет назад показал YouTube-канал LGR, на этих камерах можно запускать Doom . Помните о DigitaOS. Мы вернемся к этому в следующем разделе.
Кто-нибудь действительно запускал Doom на одной из этих камер в 1998 году? Не из того, что мне удалось найти, но я предполагаю, что это ответ, затерянный во времени — или, по крайней мере, в Интернете. Но с первых дней выпуска исходного кода и его последующего портирования на разные платформы стало ясно, что по крайней мере некоторые эксперименты проводились. Одной из самых ранних ссылок на правильный порт Doom, которую я смог найти, было сообщение на форуме Doomworld от 2007 года , где автор ссылается на (ныне удаленное) видео на YouTube, где игра работает на калькуляторе TI-83.
В октябре 2013 года It Runs Doom! Страница Tumblr открылась, и после демонстрации некоторых основных портов игры автор поделился видео, как в Doom играют на пианино .
Однако после поиска в Tumblr, Reddit, YouTube и просто старом Google все равно одно видео продолжало появляться. Это видео LGR о Doom на TI-83 . Видео, опубликованное в 2017 году, собрало более 7 миллионов просмотров и на сегодняшний день является самым популярным источником Doom , работающего на нетрадиционном устройстве, который я смог найти в своих исследованиях. Идея о том, что Doom может работать на чем угодно, возникла еще во время первого выпуска игры, и энтузиасты играли с этой идеей долгие годы. Однако современная одержимость запуском Doom на множестве странных устройств, похоже, по крайней мере частично, связана с видео LGR на эту тему.
Doom является знаковым, и это, без сомнения, является причиной одержимости его портированием. Но в самой игре есть множество различных факторов, которые делают ее идеальным кандидатом для такого рода хакерских проектов энтузиастов.
Высокомобильный истребитель демонов
Прежде чем перейти к более техническим деталям того, что сделало Doom таким портативным, отметим, что ничего из этого не произошло бы, если бы Doom не был таким сертифицированным культурным эталоном. Сказать, что Doom был безумно популярен, значит не сказать ничего. Основатель Valve Гейб Ньюэлл, который работал в Microsoft на момент выпуска Doom , подсчитал, что в 1993 году Doom был установлен на большем количестве компьютеров, чем Windows . Даже если это преувеличение, нельзя отрицать, что Doom стал сенсацией.
Всего через несколько месяцев после выхода Doom , в 1994 году, Universal Pictures приобрела права на создание фильма. Ньюэлл предложил сделать порт Doom на Windows бесплатно. Intel запретила установку Doom на рабочие компьютеры. В пресс-релизе, анонсирующем игру , id Software написала: «Мы полностью ожидаем, что [ Doom ] станет причиной номер один снижения производительности в бизнесе по всему миру».
«Многие начали удивляться тому, как id может заставить такие компании, как Microsoft или IBM, выглядеть устаревшими. Id взяла феномен условно-бесплатного ПО и превратила его в рецепт зависимости», — говорится в книге Дэвида Кушнера «Masters of Doom». « Doom был настолько захватывающим, что людям просто нужно было получить полную дозу. Некоторые окрестили это «героиновой программой». Журнал Forbes опубликовал восторженную статью под названием «Прибыль из подполья» о том, как id фактически делает такие компании, как Microsoft, устаревшими. «Частная компания id Software не публикует финансовые отчеты, — гласило оно, — но судя по тому, что я могу узнать о прибыли компании, Microsoft выглядит как второразрядная цементная компания».
Популярность, возможно, стала тем матчем, который положил начало лесному пожару, но для того, чтобы Doom мог работать на стольких разных платформах, ему требовались три ключевых элемента. Во-первых, исходный код должен был быть в свободном доступе. Проверять. Кармак решил сделать этот шаг самостоятельно. В конце концов, вы можете запустить оригинальную игру Super Mario Bros на большинстве современных электронных устройств, но удачи вам в поиске исходного кода.
Но вот два момента, которые требуют более подробного объяснения. Порты исходного кода должны быть доступны практически для любой платформы, которую вы захотите, и, наконец, игра должна быть написана так, чтобы работать с чрезвычайно низкими требованиями к программному и аппаратному обеспечению, даже по стандартам конца 1990-х годов.
Есть и другие игры, в которых есть некоторые из этих элементов. Но Doom, в сочетании с его потрясающей популярностью, поражает все три. И как объяснил мне разработчик Sick.Codes , Doom стал «одной из самых портированных игр на Земле, где кто-то в какой-то момент скомпилировал ее даже для самых случайных архитектур».
Позвольте мне продемонстрировать.
Вот ссылка на версию Doom что вы можете играть в своем браузере. Ничего особенного, да? Есть десятки способов поиграть в Doom в браузере, но если вы посмотрите на адресную строку, то обнаружите кое-что интересное. Версия Doom , в которую вы можете играть, представляет собой файл SVG. Это векторный файл, который можно загрузить в Photoshop. Предполагается, что это статичные изображения, и, конечно же, изображения, с которыми вы не можете взаимодействовать. Но вот Doom работает внутри SVG, в который вы можете играть в своем браузере.
Еще одним важным фактом является то, что ПК не были идеальной платформой для игр в 1993 году, когда ускорители 3D-графики были дорогими и труднодоступными, и вместо этого большинство этих чипов использовались в игровых автоматах и домашних консолях. Если id Software собиралась разрабатывать игру, и особенно если компания собиралась распространять ее в виде условно-бесплатного программного обеспечения, как это было раньше с Commander Keen и Wolfenstein , ей нужно было работать практически на чем угодно.
Гзало является частью аргентинской волонтерской группы Cybercirujas, которая принимает в дар детали компьютеров и ремонтирует их. Разработчику удалось запустить Doom на платежном терминале Verifone VX620, который они нашли в мусоре.
«[Doom] просто нужен фреймбуфер (область памяти, отображаемая на экране) для вывода изображений, а также некоторые очень простые входные данные. Что касается программного обеспечения, вам просто нужно уметь скомпилировать C для целевой архитектуры, что почти всегда является одним из первых требований, необходимых для написания программ для 32-битных процессоров», — говорит мне разработчик Gzalo. «Для портирования других новых игр часто требуется операционная система (обычно что-то вроде Linux/Posix) и какой-то способ поддержки OpenGL, что возможно, но требует дополнительной работы».
Гзало продолжил объяснять, как мало нужно Doom в плане программного обеспечения для запуска.
«Программное обеспечение терминала не модифицируется. Я нашел в Бразилии парня, который работал с этим терминалом десять лет назад и до сих пор имел сертификат разработки и способ подписать приложение, поэтому на нем работает действительный подписанный код», — рассказал мне разработчик.
Минимальные требования к программному обеспечению важны, но аппаратная часть не менее важна. Неудивительно, что для запуска Doom не требовалось много аппаратного обеспечения. Первоначальные системные требования для игры предусматривали наличие процессора 386 с тактовой частотой не менее 25 МГц и 4 МБ оперативной памяти. В некотором смысле, 80386 был первым 32-битным процессором x86, когда-либо выпущенным Intel, и он начал появляться на ПК в 1986 году — за семь лет до выхода Doom . Запуск Doom практически на чем угодно был намеренным.
Сам Кармак рассказал, что в какой-то момент существовала даже версия, которая могла работать без монитора и просто сохранять скриншоты.
Довольно близко. Код был чрезвычайно портативным — в какой-то момент у меня была версия, которая могла работать даже без головы и просто сохранять скриншоты.
— Джон Кармак (@ID_AA_Carmack) 3 марта 2022 г.
Базовые требования к программному и аппаратному обеспечению для Doom возвращают нас к DigitaOS. Операционная система написана на языке C, что позволяет разрабатывать и выпускать для платформы сторонние приложения. Первые две камеры, выпущенные с DigitaOS — Kodak DC220 и DC260 — обе были оснащены процессорами PowerPC 800 . По моим оценкам, они использовали MPC860, который может работать на частоте до 80 МГц. LGR утверждает, что чип внутри DC260 достигает как минимум 66 МГц.
Таким образом, требования для запуска Doom были выполнены. У нас есть процессор, гораздо более мощный, чем у 386, работающий на частоте 25 МГц, немного памяти и платформа, способная компилировать код, написанный на C. Чтобы не испортить временную шкалу, это было возможно в 1998 году. ничего из того, что появилось позже, внезапно не позволило Doom работать на Kodak DC260. Все строительные блоки были там с самого начала.
Однако дело не только в том, что Doom — идеальная программа. Он очень гибкий и легко переносимый на современные устройства, но значительная часть этой истории сводится к тому, что исходный код может редактироваться бесплатно. За последние почти три десятилетия появились исходные порты Doom практически для каждой мыслимой платформы. Если вы не можете запустить Doom на чем-то с исходным кодом, вы почти наверняка сможете запустить его с одним из многих портов исходного кода.
Я знаю, вы ждали — давайте поговорим о SVG. Doom может работать внутри векторного файла, поскольку SVG поддерживает JavaScript. Как говорит разработчик Doom SVG , векторный файл просто запускает js-dos — эмулятор DOS с открытым исходным кодом на основе JavaScript — а затем использует один из различных исходных портов Doom для DOS. И хотя это может показаться своего рода программным волшебством, разработчик называет это не более чем «развлечением на несколько часов». Этим все сказано.
Как Doom стал минимально жизнеспособным хаком
В 2022 году Sick.Codes продемонстрировали работу Doom на дисплее трактора John Deere. Он был продемонстрирован на Def Con 2022, ежегодной конференции по кибербезопасности и хакерству, которая проводится в Лас-Вегасе с 1993 года — по иронии судьбы, в том же году, когда был выпущен Doom . Помимо запуска Doom , в порту вместо пушек был трактор, позволяющий буквально косить демонов. Это забавный маленький порт, но Sick.Codes говорит, что на то, чтобы начать работать, ушли месяцы. Зачем все эти усилия?
Если вы знакомы с правом на ремонт механизма, вы, вероятно, уже связали все воедино. Оборудование John Deere, созданное Deere & Company, было в центре внимания права на ремонт движения , причем не в положительном свете. Корпорация вела многолетнюю юридическую борьбу с фермерами из-за заблокированного программного обеспечения. Оборудование практически невозможно отремонтировать без непосредственного участия компании Deere. Запустить Doom на дисплее трактора John Deere — это больше, чем просто забавный трюк. Это доказательство концепции.
«Запуск Doom на флагманском стенде сельскохозяйственной техники John Deere, на разработку которого они потратили тысячи часов в течение нескольких лет, показывает, что я смог целиком и полностью взломать устройство», — сказал мне Sick.Codes. «Если я смогу запустить Doom на их флагманских устройствах, я смогу внести в устройство любую другую несанкционированную модификацию. Я могу заложить его кирпичом. Я могу улучшить его. Могу установить стороннее ПО. Я могу удалить функции или установить функции, которые должны стоить денег».
Играю в Doom на дисплее трактора John Deere (с джейлбрейком/рутированием) на @defcon pic.twitter.com/ih0QUTGNuS
— Sick.Codes (@sickcodes) 14 августа 2022 г.
В данном случае Doom является доказательством более глубокой и важной работы. В отчете Wired, посвященном этой истории два года назад, разработчик сообщил, что им удалось получить доступ к 1,5 ГБ журналов, хранящихся на машине, благодаря получению root-доступа. Эти журналы предназначены только для сертифицированных специалистов по ремонту John Deere. С их помощью фермеры или сторонние эксперты могут диагностировать и потенциально ремонтировать оборудование John Deere даже без прямого участия Deere & Company.
«Для запуска Doom требуется небольшое количество библиотек, а именно SDL2 для графики, поэтому возможность запуска игры на устройстве, на котором не предполагается запуск Doom , доказывает, что вы можете запускать произвольное программное обеспечение на устройстве, над которым вы работаете. — рассказал мне Sick.Codes.
Забавно видеть, как Doom работает на дисплее трактора, и я определенно не хочу лишать этого радости. Но здесь важно подчеркнуть более широкий контекст. Вы можете попробовать установить на подобное устройство другое программное обеспечение, но Doom — идеальный кандидат для демонстрации хака такого типа. Это наглядная, интерактивная программа, созданная для очень конкретной цели. Это также привлекает много внимания — как вы думаете, увидим ли мы в новостях о каком-то интерфейсе командной строки, работающем на дисплее трактора John Deere? Вероятно, нет.
Хотя я не хочу преуменьшать объем работы, затраченной на это (помните, на разработку этого эксплойта ушли месяцы), Doom также является относительно простой программой, которую можно хвастаться. Sick.Codes сообщил мне, что для демонстрации они использовали Chocolate Doom, который представляет собой исходный порт, созданный для работы на как можно большем количестве различных конфигураций аппаратного и программного обеспечения. Я имею в виду, что на вики Chocolate Doom есть даже страница, специально посвященная портативности исходного порта . Если бы у нас не было исходного исходного кода и если бы этот исходный код не портировался так много раз, у нас, вероятно, не было бы этой демонстрации. Конечно, это все равно было бы возможно, но кто сказал, что это действительно произошло бы?
Добро пожаловать в ад
Doom — одна из самых влиятельных игр, когда-либо созданных, и во многом это связано с обстоятельствами, при которых она создавалась. Высокооптимизированный код для ПК соответствовал условно-бесплатной модели, что сделало игру невероятно популярной, а сообщество моддеров разрослось, как снежный ком, когда в 1997 году был выпущен исходный код. Сегодня у нас есть не только одна из крупнейших и наиболее доступных платформ для моддинга Doom, но и приложение, которое далеко пережило свое первоначальное назначение.
Когда я писал эту историю, я почувствовал ностальгию, и, возможно, вы почувствуете то же самое, прочитав ее. Если да, то я бы порекомендовал скачать GZDoom и поиграть с некоторыми из безумных уровней, созданных за эти годы — вы также можете найти оригинальные файлы WAD для первых двух игр, заархивированные в Интернете. Если вы хотите пойти глубже, посмотрите документальный фильм на MyHouse.WAD , если вы еще этого не сделали (видео имеет около 13 миллионов просмотров), или, что еще лучше, загрузите уровень для себя .
И если вы хотите оставаться в духе размещения Doom там, где его не должно быть, некоторые щедрые разработчики задокументировали свои путешествия на разных устройствах. Есть описание установки его на наушники Ikko Activebuds и еще одно описание установки на VoIP-телефон . Также есть подробный пост о портировании игры на вышеупомянутый платежный терминал VX620 .
Независимо от того, как вы наслаждаетесь, расширяете или полностью меняете Doom, развлекайтесь в аду. Вас ждут сотни тысяч фанатов и разработчиков.