Банкомат, брелок и тест на беременность: на чём запускали Doom и как это работало
Вспоминаем самые странные порты легендарного шутера и пытаемся понять, почему Doom можно портировать даже на картофелину.
Иллюстрация: Doom (1993) / id Software / neilbostian.github.io / kickstarter.com / Wikimedia commons / Colowgee для Skillbox Media
Если верить книге рекордов Гиннесса, то самая портируемая игра в мире это «Тетрис»: у неё больше 200 официальных версий. А вот если определять первенство, учитывая неофициальные порты, то легко может выясниться, что победительница всё-таки Doom от id Software, вышедшая в 1993 году.
И ладно бы это были просто порты на различные компьютеры и консоли. Порой Doom можно встретить на девайсах, вовсе не предназначенных для игр, а уж тем более — для шутеров с видом от первого лица. Как вам, например, возможность поиграть в Doom с помощью теста на беременность? А ведь есть и такое.
В этом тексте мы предлагаем вспомнить самые необычные устройства, на которых удавалось запустить Doom, и попытаться понять, а как так вообще получилось, что сложная, вроде бы требовательная к ресурсам игра легко работает на чём угодно.
Doom — 30 лет! Читайте наш большой спецпроект, приуроченный к юбилею важнейшего шутера в игровой индустрии.
В этом спецпроекте — масса крутой информации о разработке всех игр серии, о феномене первой Doom и о том, как она изменила геймдев, о людях, которые работали на франшизой, и культурных явлениях, которые окружали в момент выхода каждую из частей.
Сканер для диагностики болезней сердца
У медицинского ультразвукового сканера GE Vivid S5 Ultrasound применений много. Тут тебе и сердечно-сосудистые исследования, и диагностика в сфере акушерства и гинекологии… Ну а девять лет назад на нём ещё и в Doom научились играть. Пусть устройство и выглядит по-медицински сложно, но есть у него клавиатура с трекболом, есть мышка. Да и большой монитор в наличии. Всё, что надо, чтобы запустить на нём Doom. Запись с экспериментом опубликовал на своём канале ютубер BwaveTV.
Картинку сканер выводит отличную. Цвета сочные и яркие. Единственное — управлять не очень удобно. На клавиатуре реагирует только пробел — помогает открыть дверь. Передвигаться по карте приходится с помощью трекбола или мышки. Хотя тут дело привычки, конечно. Стрелять можно с помощью кнопки Select на панели устройства. Правда, при этом персонаж ещё и разворачивается почему-то. Автору порта удалось за четыре минуты пройти первый уровень. Управление при помощи трекбола он сравнил с катанием персонажа по льду с маслом.
«GE Vivid S5 Ultrasound делает очень хорошие снимки трансторакальной эхокардиограммы, но я бы не рекомендовал его для игр. Худший игровой автомат за 50 тысяч долларов в истории».
Автор порта Doom
на GE Vivid S5 Ultrasound
Банкомат
По мнению Джона Ромеро, одного из создателей Doom, именно версия, запущенная энтузиастами на банкомате в 2014 году, стала тем спусковым крючком, который превратил портирование Doom в спортивную дисциплину у программистов.
На различные компьютеры игру и так исправно переносили, а вот портировать её на всякие необычные девайсы начали именно после видео с банкоматом. Хотя, конечно, если покопаться в истории, то и до банкомата необычных устройств хватало, о чём речь пойдёт ниже.
Разумеется, никто не стал взламывать банкомат, напичканный наличными, чтобы закачать на него Doom. Эксперимент был поставлен в небольшой мастерской на разобранном варианте устройства с подключённой к аппарату клавиатурой. Впоследствии разработчик сумел добавить возможность управлять игрой при помощи кнопок справа и слева от экрана.
Пианино
Не столько порт, сколько необычный подход к управлению игрой. В 2013 году польский инди-разработчик Миколай Каминьский, более известный как Sos Sosowski (автор серии игр McPixel), с товарищами взял старое пианино и подключил к нему компьютер. Теперь клавиши не только выдавали звук, но и управляли персонажем. Белые отвечали за передвижение, чёрные — за стрельбу.
Такую конфигурацию иронично оценил и один из авторов Doom.
«Кнопки на пианино контролируют движение вперёд, назад, влево, вправо, стрельбу, и ты играешь худшую музыку в мире, пока проходишь игру».
Джон Ромеро,
один из создателей Doom и основателей id Software
Фотоаппарат
Старая цифровая фотокамера Kodak DC260, выпущенная в 1998 году по цене в 999 долларов, стала неплохим устройством для игры в Doom. А всё благодаря богатой цифровой начинке. Этот фотоаппарат специально создавался как своеобразное спасение фотографов от необходимости обрабатывать снимок на компьютере. Сделал кадр? Прямо в фотоаппарате посмотри, как получилось, отредактируй и перешли на принтер сразу с камеры. Это был один из первых цифровых фотоаппаратов с USB-портом. В общем, этот аппарат позволял делать всё то, чему научились смартфоны где-то через 10 лет.
Управлял таким девайсом процессор PowerPC с тактовой частотой 66 МГц. В устройстве было 8 МБ оперативной памяти и звуковой чип. Изображение выводилось на жидкокристаллический дисплей разрешением 288×216.
Сторонние разработчики также могли создавать приложения для камеры. Поэтому особых сложностей с тем, чтобы засунуть файл с модифицированной версией Doom на фотоаппарат, не было. Чтобы запустить игру, автор видео просто закинул её на флешку от камеры, а затем вставил эту флешку в камеру и выбрал нужный файл на экране. Игра началась.
Офисный телефон
Телефонный аппарат Polycom VXX 600 оснащён 12-кнопочной панелью, кнопкой Home, регулятором громкости, тремя кнопками для отключения звука, использования динамика или гарнитуры. А ещё у этого офисного телефона есть сенсорный экран, с помощью которого можно даже выходить в интернет через браузер. Правда, возможности для сёрфинга ограничены. Эта функция нужна больше для разработчиков сторонних приложений.
Программист из Нью-Йорка Нил Бостиан (Neil Bostian) в 2017-м унёс из офиса один такой аппарат к себе домой, чтобы попробовать установить на него Doom. Весь процесс он подробно описал в своём блоге. Автор был уверен, что сможет сделать это быстро, раз уж аппарат использует операционную систему Linux…
Однако из-за особенностей работы устройства запустить на нём Doom оказалось не так-то просто.
Каждый вечер программист снова и снова пытался перепроектировать прошивку Polycom, чтобы взломать его. Успехом процесс увенчался лишь через четыре года.
Porsche 911
В 2017 году вышел нашумевший ролик блогера vexal, который показал, как запустить Doom на бортовом компьютере автомобиля Porsche 911 Carrera S Cabriolet. В своих объяснениях автор был предельно серьёзен и меланхоличен.
«Это может сделать любой человек в три простых шага при помощи повседневных предметов быта, которые есть дома у каждого. Всё, что надо, — диск с оригинальным Doom, ваш Porsche 911 и флешка с VIN-номером машины. Этот метод будет работать не только на Porche 911, но я настоятельно рекомендую вам делать это только на Porsche 911».
vexal,
автор порта Doom для Porsche 911
Особых премудростей не понадобилось. Как объяснил автор ролика, если перевести компьютер машины в режим отладки (debug mode), то он, по сути, превратится в обычный компьютер — в ролике на экране в этот момент загорелось что-то вроде окна Windows. Останется только вставить диск с игрой… в аудиопроигрыватель, и после этого на экране сразу появится главное меню Doom.
«Люди об этом не задумываются, но машины проходят обширные испытания на симуляторе, прежде чем их выпустят на дорогу. Побочный эффект этого в том, что все устройства управления машиной по умолчанию выступают в роли устройств управления обычным компьютером. Мы можем повернуть руль влево или вправо, и в ту же сторону повернётся персонаж в Doom. Ручка переключения скоростей меняет оружие. Гудок — это выстрел. А если поехать вперёд, то вперёд пойдёт и персонаж».
vexal,
блогер, снявший ролик о запуске Doom на Porsche 911
После этого автор ролика выезжает на дорогу и начинает наматывать круги, убивая монстров в игре.
Ролик разлетелся по Сети. К настоящему моменту у него 1,5 млн просмотров. Его даже добавили на сайт canitrundoom.org, где ведётся учёт всех необычных устройств, на которых удалось запустить Doom.
И, к сожалению для всех, у кого есть Porsche 911, весь этот ролик не более чем шутка. Блогер vexal во время монтажа видео просто наложил изображение игры поверх экрана устройства. Хотя было бы странно поверить, что можно было бы без особых модификаций управлять игрой на бортовом компьютере при помощи руля и гудка. Впрочем, кто знает. Возможно, однажды в будущем появится и такой вариант порта.
Кубик LEGO
В 2022 году инженер Джеймс Браун создал настоящий компьютер размером с кубик LEGO. Собственно, внутрь наклонного кубика он его и поместил. У этого компьютера выдающий чёрно-белое изображение дисплей с разрешением 72×40. И да, разработчик смог запустить на нём Doom.
Для управления он подключил к детальке акселерометр. Наклоняя кубик вперёд, влево, вправо и назад, можно было двигаться в игре. А стрелять и активировать объекты — прикосновением пальца к двум рожкам на детальке.
Брелок
Есть такая самая маленькая портативная консоль — Thumby. Деньги на её выпуск собирали всем миром на Kickstarter. Выглядит она как крошечный Game Boy размером с фалангу пальца и вообще больше похожа на стилизованный брелок для ключей.
Но это на самом деле консоль. Сделала её компания TinyCircuits, специализирующаяся на создании такой забавной крошечной электроники. «Брелок» использует тот же процессор и экран, что и компьютер в кубике Lego. И Джеймс Браун смог запустить на Thumby ту же версию Doom.
«В игру можно играть — ну, в том смысле, что вы можете бегать по миру. В неё нельзя играть в том смысле, что это весёлое времяпрепровождение».
Джеймс Браун,
создатель компьютера в кубике Lego
Принтер
Не самый лучший вариант порта представил блогер Steve_At_Hypothermia в 2014 году. Он запустил Doom на беспроводном принтере от Canon. Игра выводилась на маленький экран в отвратительном качестве, а все спрайты и объекты выглядели мешаниной разноцветных пикселей.
Хотя сам факт удивляет. Как объяснял автор, сделать это удалось благодаря установке пользовательской прошивки. С её помощью на принтере можно запустить всё, что соответствует спецификациям устройства.
Тест на беременность
Пожалуй, самый нашумевший порт. В 2020 году калифорнийский программист Foone Turing представил публике электронный тест на беременность, где на маленьком экранчике выводились не «полоски», а Doom.
На самом деле в изначальном виде такое устройство не в состоянии запустить Doom, ведь под эту задачу не годится ни процессор, ни экран, который может выводить лишь результат по беременности в буквах и цифрах. Программист заменил и первое, и второе. По сути, от теста осталась только оболочка. За это автор подвергся критике на Reddit.
«Они всё говорят: „Ну, он заменил экран и процессор! Это просто Doom, запущенный в оболочке от теста на беременность! Всё равно что воткнуть микроконтроллер в картофелину и сказать: ‚Смотрите, на моей картошке можно играть в Doom!‘“ А всё, что я слышу, — это то, что мне надо пойти купить немного картофеля и гидроизоляционный гель».
Foone Turing,
разработчик порта Doom для теста на беременность
Приложение «Блокнот»
В 2022 году блогер Samperson опубликовал видео, в котором он смог запустить Doom внутри программы «Блокнот». Картинка составлялась из букв и цифр и постоянно обновлялась, так что в это легко можно было поиграть. Сам автор уверял, что не модифицировал «Блокнот», однако не объяснил, как именно ему удалось подобное.
Диспетчер задач Windows
Ещё более неочевидный вариант для прохождения Doom опубликовал блогер Max Holt. Правда, до конца так и непонятно, действительно он добился возможности поиграть через диспетчер задач или же просто хитрым способом вывел в него записанный ролик. У него на канале в принципе много подобных видео. На одном из них он воспроизводит в диспетчере задач мультфильм «Король Лев».
Таблицы Excel
В 2022 году блогер Nobuaki Tanaka сумел запустить Doom, используя таблицу Excel. Каждая ячейка таблицы в этом случае выполняла функцию пикселя. Играть в это было сложно из-за тормозов, но эксперимент получился интересный.
Почему Doom так легко запустить на чём угодно
Один из ключевых создателей Doom, Джон Кармак, который и отвечал за все технологические инновации игры, с гордостью отмечает, что Doom можно запустить на всём, в чём есть 32-битный процессор.
Как же так получилось? Если в общем, то сыграли роль принципы, которых придерживалась id Software на заре своего существования. В самом начале команда насчитывала лишь пять человек. И до того, как выпустить Doom, они уже сделали больше 10 игр. Если не считать Wolfenstein 3D и ещё пары ранних шутеров с видом от первого лица, в основном это были платформеры.
«1. Никаких прототипов. Просто делай игру. Полируй её по ходу дела. Не рассчитывай, что сделаешь это когда-то потом.
2. Игра всегда должна запускаться. Делай движок, который запустит игру даже при ошибке при загрузке ресурсов. Обеспечь файлы по умолчанию. Не загрузился спрайт? Пусть в этом случае вместо него по умолчанию загружается изображение бублика, чтобы сразу стало понятно — что-то не так.
3. Делай свой код абсолютно простым. Присмотрись к функциям [в коде] и найди способ, как упростить их ещё больше».
Джон Ромеро,
один из создателей Doom и основателей id Software
Это лишь несколько принципов. Но вот последний — как раз одна из причин, благодаря которым сейчас Doom можно портировать на устройства, не предназначенные для игр. Чтобы придерживаться этого принципа, id Software во всех своих играх вплоть до Doom 3 использовала язык программирования C.
С появился ещё в 1970-х и популярен до сих пор благодаря своему особому положению в иерархии языков программирования. Есть языки низкого уровня, которые позволяют давать команды прямо в процессор, образно — общаясь с компьютером на его языке, чуть ли не через нули и единицы. Для неподготовленного человека программы на таких языках выглядят как бессмысленный набор букв и цифр. Их ещё называют языками ассемблера. Языки ассемблера зависят от процессора. Программу, написанную для одного процессора, нельзя просто взять и заставить работать на каком-то другом процессоре. Это осложняет портирование игры на другие системы.
А есть языки высокого уровня, когда даже не программист может посмотреть в код и примерно понять, что там происходит, ведь увидит он не набор символов, а слова: if, else, go to, while, for, break… Сам компьютер этих слов не понимает, поэтому для него ваш код в понятные ему нули и единицы переведёт специальная программа.
Низкий уровень — власть над железом и быстродействие. Высокий уровень — не так много власти над железом и не так уж быстро, зато порог вхождения ниже и программы, написанные на нём, можно запустить на разных машинах.
Язык программирования C расположился где-то посередине. Поэтому его ещё называют языком среднего уровня. Он состоит из понятных человеческих слов, как язык высокого уровня, но позволяет напрямую обращаться к железу, будто ты пишешь на языке низкого уровня.
«В Doom изображение не рендерится горизонтальными полосками пикселей. Оно создаётся из вертикальных полос пикселей. И этот внутренний цикл, который рендерит изображение из вертикальных полосок, написан на языке C.
Какой бы ни была платформа, обычно ты преобразовывал бы код в язык ассемблера для чипа, установленного на устройстве, чтобы он работал действительно быстро. Но сейчас чипы настолько быстры, что люди просто оставляют код на C. На самом деле, заставить Doom работать на современных чипах, таких как в тесте для беременности, не так уж и сложно. Памяти у них хватает. А вот заставить Doom работать на компьютерах, которые были за 10 лет до создания Doom, — вот это реально сложно».
Джон Ромеро,
один из создателей Doom и основателей id Software
Справедливости ради, изначально в Doom часть кода всё-таки была написана на языке ассемблера, что осложняло его портирование на различные системы. Как объяснял Джон Кармак, в Doom было всего две ассемблерные процедуры — для растягивания колонн по вертикали и для горизонтального наложения текстуры на строку. Остальное было написано на C. Но в последующих версиях игры эти процедуры тоже реализовали языком С.
Сильно облегчило работу ещё и то, что в 1997 году id Software опубликовала исходный код Doom, снабдив его текстовым файлом с лаконичным «Переносите на вашу любимую операционную систему».
* * *
На самом деле история с портированием Doom давно превратилась из соревнования между программистами в мем. Поэтому стоит верить далеко не каждому ролику на YouTube с новым необычным портом.
Тем не менее факт остаётся фактом: в Doom можно поиграть практически на чём угодно, что можно назвать компьютером.