С его многолетним наследием, мем «Может ли он запустить Doom» — одна из самых старых и любимых шуток интернета. Но это стало гораздо больше, чем просто шутка. Это ритуал посвящения для стремящихся разработчиков.
Пройдитесь по тому, что стало моим любимым сабреддитом в последнее время, r/itrunsdoom, и вы увидите, как факел решительно продолжают нести и по сей день. С тех пор как страница It Runs Doom! на Tumblr перестала обновляться около года назад, сообщество Reddit выросло до более чем 100,000 участников, которые публикуют и комментируют то, как Doom портируется на что угодно. Калькуляторы, терминалы кредитных карт — конечно. Но также и Nintendo Alarmo, робот RS Media 2006 года и Pioneer DJ multiplayer. И это только за последние несколько месяцев.
Чем глубже я погружался в странные порты Doom, тем больше я начинал задаваться вопросом, откуда возникла эта идея — и, что более важно, почему это вообще возможно. Чья абсурдная идея была это с самого начала? Чтобы узнать историю, мне нужно было прокопаться через адские анналы интернета 1990-х и поговорить с некоторыми безумными хакерами, которые поддерживают традицию и сегодня.
Почему Doom?
Наша история не начинается в 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, и, как показывал канал 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 — оценил, что Doom был установлен на большее количество компьютеров, чем Windows в 1993 году. Даже если это преувеличение, нельзя отрицать, что Doom стал сенсацией.
Спустя всего несколько месяцев после выхода Doom , в 1994 году, Universal Pictures приобрела права на создание фильма. Ньюэлл предложил бесплатно сделать порт Doom на Windows. Intel запретила устанавливать Doom на рабочие компьютеры. В пресс-релизе, анонсирующем игру, id Software написала: «Мы полностью ожидаем, что [Doom] станет основной причиной снижения производительности в бизнесе по всему миру.»
«Многие начали удивляться, как id может сделать такие компании, как Microsoft или IBM, устаревшими. Id взяла феномен shareware и превратила его в рецепт зависимости», — пишет Дэвид Кушнер в своей книге 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 собиралась разработать игру, особенно если компания планировала распространять ее в качестве shareware, как это было с Commander Keen и Wolfenstein ранее, она должна была работать на чем угодно.
Gzalo — это часть аргентинской волонтерской группы Cybercirujas, которая принимает запчасти ПК в качестве пожертвований и восстанавливает их. Разработчик смог запустить Doom на терминале Verifone VX620, который они нашли в мусоре.
«[Doom] просто нуждается в кадровом буфере (области памяти, которая отображается на экране), чтобы выводить изображения, и в очень простых входах. Что касается программного обеспечения, вам просто нужно иметь возможность компилировать C для целевой архитектуры, которая почти всегда является одним из первых требований для написания программ для 32-битных процессоров», — рассказывает мне разработчик Gzalo. «Для переноса других новых игр часто нужно иметь операционную систему (обычно что-то вроде Linux/Posix) и способ поддержки OpenGL, что осуществимо, но требует больше работы».
Gzalo далее объяснил, насколько немного 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. Как говорит разработчик SVG Doom, векторный файл просто запускает js-dos — открытый, основанный на JavaScript эмулятор DOS — и затем использует один из различных источников портов DOS для Doom. И хотя это может казаться какой-то формой программирования, разработчик называет это не более чем «увлекательным использованием нескольких часов». Это все говорит само за себя.
Как Doom стал минимально жизнеспособным хаком
В 2022 году Sick.Codes продемонстрировал Doom запущенный на дисплее трактора John Deere. Это было показано на Def Con 2022, ежегодной конференции по кибербезопасности и хакерству, которая проводится в Лас-Вегасе с 1993 года — иронично, в тот же год, когда вышел Doom . Beyond just getting Doom running, порт фокусировался на тракторе вместо оружия, позволяя буквально косить демонов. Это забавный маленький порт, но 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 ГБ логов, хранящихся в машине, благодаря получению прав суперпользователя. Эти логи предназначены только для сертифицированных техников по ремонту John Deere. С их помощью фермеры или сторонние эксперты могут диагностировать и потенциально ремонтировать оборудование John Deere, даже без прямого участия Deere & Company.
«Doom требует небольшое количество библиотек для запуска, а именно SDL2 для графики. Так что возможность запустить игру на устройстве, которое не должно запускать Doom, доказывает, что вы можете запускать произвольное программное обеспечение на устройстве, с которым работаете», — рассказал мне Sick.Codes.
Забавно видеть ситуацию, когда Doom работает на дисплее трактора, и я, безусловно, не хочу лишать вас радости от этого. Но важно подчеркнуть более широкий контекст. Вы можете попытаться установить другое программное обеспечение на такое устройство, но Doom является идеальным кандидатом для демонстрации этого типа хаков. Он визуален, он интерактивен, и это программа, созданная для конкретной цели. Она также привлекает много внимания — вы действительно думаете, что мы увидим новости о каком-то интерфейсе командной строки, работающем на дисплее трактора John Deere? Вероятно, нет.
Хотя я не хочу приуменьшать объем работы, вложенной в это — помните, этот эксплойт занял месяцы, чтобы его решить — Doom также является относительно простой программой для демонстрации. Sick.Codes говорит мне, что они использовали Chocolate Doom для демонстрации, который является портом, разработанным, чтобы работать на как можно большем количестве различных конфигураций аппаратного и программного обеспечения. Я имею в виду, что в вики Chocolate Doom есть даже страница, специально посвященная тому, насколько портативен этот исходный порт. Если бы у нас не было оригинального исходного кода, и если бы этот исходный код не подвергся стольким повторным портам, мы, вероятно, не имели бы этой демонстрации. Это все еще было бы возможно, конечно, но кто скажет, что это действительно произошло бы?
Добро пожаловать в ад
Doom является одной из самых влиятельных игр, когда-либо созданных, и во многом это связано с теми обстоятельствами, в которых она была создана. Высокая оптимизация кода для ПК встретилась с моделью shareware, что сделало игру крайне популярной, а ее моддинг-сообщество резко возросло после выхода исходного кода в 1997 году. Сегодня у нас не только одна из крупнейших и самых доступных платформ для моддинга через Doom , но и приложение, значительно превышающее свою первоначальную цель.
Я начал чувствовать ностальгию, пиша эту историю, и вы, возможно, чувствуете то же самое, прочитав ее. Если это так, я рекомендую скачать GZDoom и поиграть с некоторыми из безумных уровней, созданных за эти годы — оригинальные WAD файлы для первых двух игр тоже доступны в архиве онлайн. Если хотите углубиться, посмотрите документальный фильм о MyHouse.WAD, если вы еще этого не сделали (видео собрало около 13 миллионов просмотров), или лучше, скачайте уровень сами.
И, если вы хотите оставаться в духе помещения Doom в места, где его не должно быть, некоторые щедрые разработчики документировали свои пути через разные устройства. Есть статья о том, как установить его на наушники Ikko Activebuds, и другая о том, как установить его на VoIP-телефон. Также есть подробный пост о переносе игры на упомянутый ранее терминал VX620.
Независимо от того, как вы наслаждаетесь, расширяете или полностью изменяете Doom, развлекайтесь в аду. Сотни тысяч фанатов и разработчиков ждут вас там.
Вы также можете читать меня в:
- Telegram: https://t.me/gergenshin
- Яндекс Дзен: https://dzen.ru/gergen
- Официальный сайт: https://www-genshin.ru