9 неожиданных устройств, на которых запускали Doom
20 ноября канадский видеоблогер выложил видео, как он играет в оригинальный Doom на тачпанели нового Macbook Pro. Редакция DTF вспомнила ещё 7 необычных способов, к которым прибегали изобретатели, чтобы запустить классический шутер студии id Software.
Apple Watch и Apple TV
В сентябре 2015 года сотрудники компании «Фейсбук» запустили Doom на устройствах от Apple — часах и ТВ-приставке. Лиор Туби и Мехди Мулани участвовали в 10 часовом хакатоне, который проходил в Тель-Авиве, и за это время перенесли легендарный шутерсначала на Apple Watch, а затем на Apple TV.
Авторы воспользовались исходным кодом проекта, который был выложен в открытый доступ в 1997 году. По их словам, они просто развлекались, поэтому не станут выпускать никаких официальных приложений для этих устройств.
Банкомат и рекламная панель
Австралийские энтузиасты выложили ролик, в котором подробно рассказали о том, как поиграть в Doom на стандартном банкомате. Они вывели изображение на стационарный монитор, подключили i-Pac контроллер, чтобы управлять боковыми кнопками, а также подсоединили трекпад.
Тогда же, в июле 2014 года, другие разработчики запустили шутер на рекламной панели трейлера. Авторы рассказали, что им пришлось переписать код и использовать драйвера от системы Linux, чтобы игра выводилась на крупный светодиодный экран.
Калькулятор и принтер
Мода на запуск Doom на любых устройствах появилась ещё в 2011 году. Разработчики с профессионального форума omnimaga запустили игру на классическом калькуляторе TI-Nspire с черно-белым экраном. Они переписали код и в результате даже сумели пройти несколько уровней.
Год спустя другие энтузиасты переделали шутер под новую версию калькулятора TI-Nspire с цветным экраном. В итоге, игра выглядит как неплохая мобильная адаптация.
Год спустя другие энтузиасты переделали шутер под новую версию калькулятора TI-Nspire с цветным экраном. В итоге, игра выглядит как неплохая мобильная адаптация. В 2014 году специалисты по безопасности компании Context Information Security воспользовались лазейкой офисного принтера. Они взломали Canon Pixma, потому что устройство не требует идентификации пользователя, и запустили Doom на мини-экране.
Пианино и бензопила
Самое быстрое портирование шутера 90-х годов вышло у изобретателя под ником Sos Sosowski. За 24 часа он перенёс Doom в пианино: встроил в деревянную панель компьютера, а клавиатуру переоборудовал в клавиши от инструмента.
Известный Youtube-блогер и изобретатель Джордж Мерлокко вмонтировал миниатюрную систему Raspberry Pi Zero в игрушечную бензопилу и запустил на ней вторую часть Doom.
В ролике он играет и на клавиатуре, и на геймпаде от Xbox 360. Таким образом Мерлокко выразил уважение к классическим шутерам своего детства.
Doom внутри Doom
Дальше всех зашёл автор The Zombie Killer, который в 2015 году выпустил мод Classic Arcade для игры 1993 года. С помощью него можно поиграть в некоторые уровни Doom на аркадном автомате внутри шутера.
Единственное, это не традиционная, а портированная версия ZDoom, которая поддерживает более широкое редактирования и высокое разрешение.
На чём запускали DOOM
Есть такая народная забава, портировать Doom на всякие калькуляторы. Массовым это увлечение стало уже в декабре 1997 года когда Джон Карман перевёл исходники Doom под лицензию GPL сделав их общедоступными для некоммерческого использования. В этой статье мы расскажем немного об этой забаве и приведём 5 самых интересных портаций DOOM.
Сам Doom написан на языке С, достаточно низкоуровневом и близком к железу языке, что делает портацию на самые разные устройства более простой и осуществимой задачей.
24 июня 2009 ID Software была приобретена издательством ZeniMax Media, которое в спустя несколько лет перевела под лицензию GPL исходный код других продуктов разработанных ID Software, такие как Quake 2, 3, Wolfenstein 3D а впоследствии и Doom 3 BFG Edition.
Посмотреть исходники игр студии можно тут — https://github.com/id-Software
А непосредственно Doom’a тут — https://github.com/id-Software/DOOM
Важное замечание, что под лицензией GPL только исходный код, а игровые файлы, музыка, текстуры все ещё остаются платными и продаются в steam. Таким образом компания имеет возможность продолжать зарабатывать на этих тайтлах давая возможность разработчикам всего мира перенять их опыт и хорошие (а также и плохие, например wolf_actor_ai.c ) решения.
Так на что же портировали Doom?
В первую очередь Doom конечно портировали на различные устройства и платформы, чтобы в него действительно можно было поиграть. К такого рода портам например относится портирование на Adobe Flash. Можете поиграть в DOOM на известном сайте Flash игр NewGrounds.
Также Doom запустили в браузере с помощью JavaScript. Но тут все на порядок сложнее, так как на JS написали порт DOS эмулятора Dos-Box и уже в нём запускается DOOM (а также многие другие игры). В общем матрёшка получилась такая, что лично у меня DOOM тормозит.
А также можете встроить это решение на свой собственный сайт:
Периодически DOOM продолжают портировать на игровые консоли, например не так давно его портировали на Nintendo Switch
С некоторой натяжкой можно сказать, что также для того чтобы поиграть DOOM портировали на Apple Ipod nano
https://youtu.be/5aKeACL2giA
А вот на остальные девайсы DOOM портировали просто потому что могут. Список устройств действительно уникален
И вот наши топ5 устройств для игры в Doom
5 — TouchBar MacBook Pro
DOOM запустили на MacBook Pro — эта фраза вовсе не вызывает удивления. Совсем другое дело в том, что его запустили не на экране, а на TouchBar’e макбука. Играть на нём конечно совершенно не возможно, но ведь работает.
4 — На кнопке клавиатуры Оптимус Максимус
Это клавитура от студии Артемия Лебедева на каждой кнопке которой есть небольшой экранчик. Чтобы “запустить” на ней DOOM, пришлось сильно извратится, по сути, сам DOOM работает на машине к которой подключена клавиатура, специальная программа очень часто делает скриншоты игры который и показываются на кнопке клавиатуры.
В отличие от TouchBar’a играть уже можно, хотя конечно и не удобно.
3 — На пианино.
Это конечно специальное пианино с дисплеем, где кнопки пианино при нажатии не только издают звуки, ну и служат для управления в игре. Можете сами оценить, какая “симфония” получается при игре в DOOM.
2 — На бензопиле.
Конечно для этого пришлось встроить в бензопилу Raspberry Pi и экранчик, но разве оно того не стоило, это же так в духе самого DOOM.
1 DOOM
Да, вы всё правильно поняли, DOOM запустили внутри DOOM, чтобы вы могли играть в DOOM пока играете в DOOM.
В моде GZDoom, вы можете найти игровой автомат в котором собственно будет Doom.
И на заключение, DOOM портируют не только на различные устройства, но в том числе и на более современные игровые движки. Одна группа энтузиастов например занимается портированием DOOM на движок Unity и выглядит это вот так
Другая группа пишет собственный движок который открывает возможность для желающих разрабатывать собственные модификаций для DOOM, одной из самых известных на данный момент является Brutal DOOM и это в свою очередь выглядит вот так:
Почему разработчики любят запускать Doom на разном железе
Потому что это очень просто.
Первая версия Doom появилась, страшно сказать, в 1993 году. Тогда она работала только на ПК. Через год в неё можно было играть на любой приставке, а потом её стали запускать везде, где есть хоть какой-то экран и процессор. Разработчики и программисты просто развлекаются тем, что запускают Doom на том железе, где не предполагалось никаких игр: на фотоаппаратах, рекламных щитах, аппаратах УЗИ, холодильниках и бензопилах.
На то есть причина. Для своего времени Doom была технологическим чудом: с инженерной точки зрения это очень умно сделанная игра, в ней применяются невообразимые для современного программиста оптимизации, и всё ради того, чтобы обойти ограничения древнего компьютерного железа.
Запустить Doom на чём-то сегодня — это как взобраться на Эверест. В целом низачем не нужно, но очень почётно и интересно.
Размер
Игры, подобные Doom, обычно занимали 15–20 мегабайт, но разработчики из id Software смогли уместить её в 4 мегабайта. Сюда входят:
Если вам интересно, как это могло быть сделано, почитайте наш разбор о том, как пишут подобные игры.
Благодаря размеру в 4 МБ Doom можно записать почти на любой компьютер. Напомним, это было время, когда у людей были жёсткие диски по 100–500 МБ.
Ненастоящее 3D
До Doom игры по большей части были двумерными по сути и смыслу: ты прыгал с платформы на платформу, ходил по плоскости вправо-влево. Могла быть какая-то имитация глубины, как в каких-нибудь винтажных «Черепашках-ниндзя», но всё равно ощущался плоский мир. Были, конечно, и трёхмерные игры, но выглядели они…
Doom впервые замахнулся на то, что сейчас бы назвали «иммерсивным 3D-шутером». Была цель сделать игру, в которую ты погружён от первого лица, и при этом чтобы она была очень быстрой по геймплею. Нужна была нормальная трёхмерная графика.
Но на Пентиумах тех лет трёхмерная графика страшно тормозила. Её можно было рисовать в режиме слайд-шоу, но на динамичный экшен мощности не хватало.
Отсюда первая крутейшая оптимизация трёхмерной графики в Doom: это не трёхмерная графика. Здесь нет высоты. Вы видите высоту на экране, но это всего лишь хитрая программистская оптимизация. Главный герой может смотреть только вправо-влево, но у него нет движения вверх-вниз. Все объекты в Doom находятся на одном уровне с главным героем.
Вы заметите, что главный герой при ходьбе как бы качается вверх-вниз. При этом его точка зрения всегда ровно по центру, взгляд героя всегда устремлён в горизонт.
Для примера, сравните это с уже подлинно трёхмерной игрой Quake, которая вышла тремя годами позднее. Тут уже и камера смотрит во всех направлениях, и враги — это трёхмерные модели:
Для компьютера это псевдо-3D значит, что не нужно считать искажения от движения камеры вверх. Достаточно просто считать перспективные искажения стен и пола, применяя менее ресурсоёмкую математику.
На экране это почти незаметно: благодаря свету, тональной перспективе и текстурам игроку кажется, что всё по-настоящему трёхмерно. Но в игре у главного героя не получается пройти под летающими монстрами или пролезть под препятствием.
Но постойте: а как же лестницы? А шутка в том, что ступеньки, кубы и прочие выступы — это фактически отдельные комнаты со своей высотой пола, но без стен. Всё, что внутри этой комнаты, располагается на одной высоте, поэтому когда герой забирается на ступеньку, по факту он просто попадает в другую комнату, где всё снова становится с ним одной высоты.
К чему это приводит:
С — совместимость
Почти весь движок Doom написан на C, а это значит, что его можно портировать и перекомпилировать для других платформ. Штука в том, что C — очень гибкий и мощный язык, который не зависит от платформы, главное, чтобы был нужный компилятор.
Но оставалась ещё та часть, которая в оригинальной игре была написана на ассемблере, и при переносе с ней могли быть проблемы, так как ассемблер зависит от конкретного процессора. Всё решилось, когда разработчики переносили игру на приставки Nintendo и заменили эти фрагменты кодом на C.
После этого Doom можно было портировать на что угодно, если для этого железа есть C-компилятор.
Автоматическая оптимизация на слабом железе
У движка Doom есть классная особенность: он сам определяет мощность процессора и возможности монитора, чтобы графика работала быстро даже на слабых машинах.
Устроено это так: если процессор слабый, то текстуры упрощаются в два раза, если совсем слабы — в четыре раза. Каждая текстура накладывается на одну сторону виртуального куба, у которой есть длина и ширина. Так как текстуры упрощаются в два раза по каждому измерению, получается, что на одну сторону тратится в 2 × 2 = 4 раза меньше ресурсов, а на весь куб — в 24 раза меньше.
С монитором то же самое: если он может отображать только 8 цветов, то процессор не будет вычислять оттенки красного, например. Вместо этого он всю палитру приведёт к цветам монитора и будет работать с ними, что даст существенный прирост производительности.
Сюжет и драматургия
В Doom были и геймдизайнерские новшества:
И такой момент: первые уровни Doom показали бесплатно в 1992 году, а потом уже в 1993 выпустили полную платную версию. Естественно, все её дико захотели. Free-to-play родился где-то вместе с Doom.
Великая игра, что говорить. Даже сейчас играется на ура. Спасибо тебе, Doom, за наше счастливое детство.
Все устройства, на которых можно запустить Doom: готовьте ваш калькулятор
Легендарный Doom, который появился уже больше 20 лет назад, до сих пор не отпускает своих истинных фанатов. Более того, они играют не только на компьютере, но и на другой технике. Иногда только диву даешься от того, на чем запускают игру. В данной статье собраны самые интересные устройства, на которых можно поиграть в Doom, так что устраивайтесь поудобнее и приготовьтесь удивиться.
Автомобиль
Недавно Doom был запущен на компьютере в Porshe 911. Это было показано на видео, которое 19 февраля показал на своем канале пользователь vexal. Он просто вставил в USB-порт флэшку, а также вставил диск в CD-привод. Передвижение в игре происходило с помощью руля, педалей, а также коробки передач, для чего пришлось колесить по парковке. Видео оказалось фейком, к счастью и безопасности окружающих.
Однако в 2015 году пользователь с ником DavidXNewton показал, что в его автомобиле Honda Fit всё-же можно запустить Doom. Правда с помощью установленного там мини-компьютера Raspberry Pi. Конечно, это уже не так зрелищно, но зато куда безопаснее предыдущего варианта.
DOOM на калькуляторе
Еще один неплохой вариант, который поможет развлечься на скучном экзамене. Конечно на обычном калькуляторе запустить игру не получится, зато вот на научном калькуляторе — почему бы нет? Изображение, правда, не блещет.
Однако, если поработать над графикой и адаптировать ее под калькулятор.
Принтер
Если у вас под рукой есть принтер с цветным экраном, то почему вы еще сидите? Бегом запускать на нем Doom!
Одна проблема — отсутствие звука. Видите рядом еще один принтер? Вперед запускать на нем саундтрек!
Приобрести умные часы можно хотя бы ради того, чтобы запустить на них Doom. С этой задачей справится и Android Wear и Apple Watch. Еще один способ развлечься в любой ситуации.
Банкомат
Так как внутри банкомата располагается самый обычный компьютер, то на нем можно запускать игры. Для управления используйте кнопки ввода банкомата.
Электронная книга
Утомились при чтении книги? Пора расслабиться и как следует пострелять!
Айпод
Или же иной плеер с экраном.
Бензопила
Если вы хотите острых ощущений, то можете попробовать сыграть в Doom на бензопиле. Правда предварительно придется встроить в пилу компьютер Raspberry Pi и экран.
Рекламный баннер
Фотоаппарат
Тачбар
В конце прошлого года компания Apple явила миру новое поколение MackBook Pro, которые имеют TouchBar — узкий сенсорный экран над клавиатурой. И на нем тоже можно запустить Doom.
Осциллограф
Данный вариант нельзя назвать честным, так как внутри данного устройства находится простой компьютер под управлением Windows 95. Все, что нужно — установить игру и запустить.
Хотя в теории возможно и полностью портировать игру на осциллограф. Ведь если получилось с Quake, то почему бы не проделать такое с Doom?
На клавиатуре
В далеком 2008 году «Студия Артемия Лебедева» выпустила свою клавиатуру под названием «Оптимус Максимус», где каждая клавиша имела небольшой цветной экран, чтобы пользователи имели возможность настроить клавиатуру под себя. Игру запустили, в этом случае, очень сложно. В Doom играли на компьютере, но специальная программа всё время делала скриншоты и отправляла их на клавишу.
Ну и, наконец, подходим к концу. В GZDoom, который является фанатским портом Doom, имеется игровой автомат, на котором вы можете поиграть в Doom. Таким образом вы будете играть в Doom, играя в Doom.
Запускаем DOOM на калькуляторе HP Prime G2
Новости по проекту
Тем, кому интересно как же я запустил DOOM, могут пропустить эту главу и перейти сразу к следующей. Тут просто представлен текущий статус проекта.
Как вы помните в прошлых частях (часть 1 и часть 2), я занимался тем что ставил Linux на калькулятор, пересобирал u-boot, kernel, rootfs. С тех пор достаточно плотно занимался калькулятором и даже основательно разобрался с тем, что же было сделано в u-boot, kernel и device tree. Надо понимать, что это моё хобби, в свободное от основной работы и семьи время, поэтому не всё идёт быстро, и порой несколько алогично, просто потому что сегодня есть настроение делать так, а не иначе.
Главная новость состоялась, благодаря пользователю Alx2000y, который пригласил меня в чатик в телеге, где на аналогичном процессоре народ пилит свою прошивку для Xiaomi Gateway. Даже есть статья на хабре по теме. Народ уже сильно продвинулся в данной теме, невероятно расширив функционал устройства. И мне очень сильно помогли победить проблему nand. Как вы помните, в самом начале я свой образ nand затёр по глупости. В результате, у меня получилось достаточно большое количество «виртуальных» битых секторов, самое неприятное что битые сектора находились в самом начале и не давали записать туда u-boot. Ниже привожу список битых секторов, большинство из них виртуальные.
Ленар, из вышеупомянутого чатика, очень сильно мне помог, проблема решилась буквально двумя командами в u-boot:
После чего, проверяем количество битых секторов, и, о чудо, их стало значительно меньше!
В результате, я теперь могу загрузить u-boot в нулевой сектор и произвести загрузку. На данный момент, калькулятор может быть загружен просто подав питание и будет полностью загружен linux, с работающим дисплеем и возможностью запуска программ по UART. Там даже корректно работает DOOM. «Но, есть нюанс» (С). Видимо драйвер клавиатуры как-то пересекается с драйвером ubifs, и в результате, если нажать любую клавишу на клавиатуре, то происходит мгновенное зависание калькулятора. Мне разок даже прилетел kernel panic, но я не сообразил его сохранить, чтобы хотя бы найти место этого пересечения. Так что на данный момент, всё однозначно работает в initramfs. Видео с демонстрацией работы загрузки nand, запуска DOOM и зависания постил в своём телеграмм канале.
Из других хороших новостей, попробовал поставить ubuntu на nand, тоже корректно работает. Пакеты, конечно, ставить нельзя, но в целом можно работать и использовать её, что тоже удобно. Но без работающий клавиатуры, эти игры пока лишены практического смысла.
В последней части я жаловался, что u-boot имеет разное поведение, при работе на nand и из ОЗУ. Я потратил два дня, ковыряния в исходных кодах u-boot, чтобы понять в чём же дело. А всё оказалось банально (даже стыдно). Утилита uuu, при запуске u-boot из памяти, передаёт туда свои переменные окружения. А точнее вызывает mfgtool_args и в результате строка переменной окружения загрузки выглядит таким образом:
Разумеется, если загрузиться с nand, то с такими параметрами ubifs в четвёртом разделе виден не будет. Поэтому после загрузки u-boot в ОЗУ, я принудительно задаю ему следующие переменные окружения:
И всё отлично работает.
Поясню, зачем это нужно: если прошить загрузчик в нулевой сектор, пропадает возможность работы через mfgtool (утилита uuu). А на данном этапе, состоящем из разработки и отладки — это основной инструмент. Поэтому проще оставить возможность работы утилиты uuu, и загружать каждый раз u-boot вручную.
Запуск DOOM
Переходим к самой интересной части — к запуску DOOM на калькуляторе. Как вы понимаете, я не зря вначале расписал обо всех проблемах. Можно запустить DOOM при загрузке на NAND-флеш, там можно поставить карты всех видов, все возможные версии DOOM и вообще всего что душа пожелает. Но при запуске в ОЗУ, мы ограничены размером образа rootfs примерно в 15 МБ (практика показала, что 16 ещё прокатывает). В связи с этим, пришлось подбирать версию DOOM и делать правильную сборку, а также научиться с ней работать.
Оказалось, что всё хорошее давно придумано за нас, и DOOM можно собрать прямо в buildroot не вставая с дивана. Это я узнал, когда гуглил все возможные варианты DOOM для встраиваемых систем и пытался их собрать. Как оказалось, достаточно запустить:
В нашем распоряжении две версии DOOM: chocolate-doom и prboom. После нескольких экспериментов, я понял что chocolate-doom ну никак не хочет влезать в initramfs. Разве, если вообще убрать wad-файлы. Пытался найти обрезанные wad-файлы, которые бы влезали вместе с шоколадным думом. Но она с ними на отрез отказалась работать. В результате, я попробовал шоколадную версию установить на nand (вместе с prboom), и пробовал там. Подбирал параметры и т.д. Результатом экспериментом стала следующий способ запуска:
Итог меня сильно разочаровал: эта версия doom некорректно (или может, наоборот, корректно) растягивает экран, оставляя широкие полосы по краям экрана, что мне очень не понравилось.
Шоколадная версия DOOM. Видна чёрная полоса снизу.
При запуске, мне шоколадный дум говорит о том, что делает изменение размера окна:
Поэтому, я остановился на prboom. Сделал образ вместе с шароварными WAD-файлами и самим prboom, всё лишнее убрал. Но, всё равно очень долго не мог заставить его работать. Читал всевозможные мануалы, искал как сконфигурировать, чтобы всё корректно работало. Изображение выводит, на кнопки реагирует, но экран коряво растягивает и выводит кривые цвета. Пока на каком-то форуме не нашёл идеальные параметры запуска.
В общем, для нашего калькулятора запуск prboom такой: отключаем мышку, и далее запускаем prboom со следующими параметрами:
Долго искал подходящие параметры, и только с этим всё завелось. Для удобства всё записал в скрипт d.sh. Наконец всё работает, можно даже играть!
Специально для вас, я подготовил обновлённую сборку flash_utility с DOOM, который вы можете запустить на своём калькуляторе даже без перепрошивки, и показать друзьям, мол вот, DOOM у меня в калькуляторе работает. Достаточно разобрать калькулятор, замкнуть контакты, описанные в первой части и запустить
В конце всех действий, вы получите калькулятор, с linux и DOOM. Чтобы запустить DOOM, надо будет залогиниться и на калькуляторе выполнить:
Резюмируя
DOOM работает! Можно ли в него играть? Ну локально, загружая с компьютера — можно. Это выглядит круто и красиво, но на деле, не совсем то что хочется получить. В действительности будет круто, когда ты едешь в метро, взять и достать из широких штанин калькулятор, включить его (на данный момент режим энергосбережения не работает), и запустить DOOM. Вот это реально круто, играть в метро на калькуляторе в DOOM, Duke Nukem 3D, Quake I, II, III и т.д. Но факт остаётся фактом — DOOM на этой железке запущен. Но ещё очень много работы.
В целом, не хватает хотя бы небольшого сообщества вокруг этого калькулятора (хотя бы больше меня одного), чтобы были тестировщики проблем, было с кем поговорить и поделиться, услышать совет. Первоначальный автор явно остыл к данному проекту, хотя и проделал титаническую работу. Я его хорошо понимаю, и никак не могу укорять за то, что он не хочет помогать даже советом по данному проекту. Ну так, небольшие рекомендации давал, но ему явно уже не до него. Поэтому если у вас есть идеи, калькулятор, желание помочь, хотя бы советом, пишите тут или в телегу, буду рад!
P.S. Зачем я этим занимаюсь?
Очень часто спрашивают меня «нафига»? Умом понимаю, что на данный вопрос отвечать глупо, но тем не менее отвечу.
Зачем художник рисует картину или автор пишет книгу? Будем честны, 90% книг, картин да и других произведений могут вообще не увидеть свет, а из тех кто увидят, доли процента станут известными и обретут широкий круг читателей. Проще говоря, большинство творцов делают «бесполезный» труд. Более того, множество произведений даже никогда не находят своего читателя, но что же им этого не делать? Что движет этими людьми? Всё достаточно банально. Ими движет простое чувство:
Проще говоря, этим занимаешься, потому что это круто и это прёт. И, как это ни странно, в будущем приносит большую пользу, хоть и не такую явную как кажется.





























