Как стать автором
Обновить

Комментарии 22

Познавательно, спасибо!

Когда уже прямо в мозг портируют? Помню, была какая-то кривая версия тетриса, в которую в детстве играл с закрытыми глазами перед сном, но там были глюк на глюке.

Я не настолько хорошо знаком с устройством оригинального движка Doom — его разбору можно посвятить целую книгу.

Я в 2002 написал свой DooM. Всё никак не соберусь его переписать в нормальный вид.

А работает так (с 3:19):

Сама игра имеет размер около 16 килобайт. Для экономии памяти
используется весьма необычная технология: стены уровня отображаются
векторной графикой, а враги традиционными спрайтами.

Я в 90-е написал аналогичный рендерер, потенциально способный работать на 8086/CGA. И таки переписал в нормальный вид по случаю оргии ретро-кодеров. Если есть желание, можно прикрутить туда нормальные думовские сектора :) Но сначала, конечно, надо бы проверить на реальном 86-м…

В принципе, могу попробовать что-то ещё более «ретровое» и ещё более быстрое :) О результатах (если будут) отчитаюсь статейкой :)

А теперь портируйте DOOM на HTML+JS и попытайтесь запустить это на мобильных устройствах через встроенный браузер. И вы сразу же наглядно увидите, насколько же современный Веб убогая и неэффективная технология. Ведь то, что отлично работает даже на древних кофеварках и калькуляторах, здесь нещадно тормозит.

И ладно бы просто тормозило! Так ведь ещё и глючит нещадно из-за проблем с совместимостью. На половине девайсов оно вообще не заведётся, причём даже без выдачи сообщения об ошибке (консольку-то в мобильные браузеры до сих пор не завезли), а на половине оставшихся будет работать с глюками.

Например, есть такой браузерозаменитель как Safari, так на нём DOOM почти наверняка будет идти без звука, потому что заставить на этом урезанном огрызке браузера работать звуковые эффекты - задача титанической сложности.

https://silentspacemarine.com/
А в чем проблема? Работает, быстро.

На десктопе - да, на моём смартфоне - нет: изображение сильно мерцает (такое впечатление, что вместо половины кадров рендерится чёрный экран), вместо звука шипение. Скорость тоже низкая, где-то в районе 3 FPS. Неиграбельно.

При этом на том же смартфоне плавно и без тормозов работают эмуляторы PSP и PS One.

Тот дум что по ссылке выше, на моём стареньком Galaxy S9 в браузере Opera работает абсолютно без тормозов.

Да, похоже проще перечислить то, на чём Doom'а не было ) Есть мнение, что это было одним из гвоздей в гроб Амиги.

Во всей этой истории вокруг Дума два ключевых слова "движок" и "порт" (перенос алгоритмов/кода/графики на другое железо с минимальным вмешательством в них). Всё остальное, что не входит в эти категории, как Вы поэтично сказали "немножко обман, дым и зеркала — магический фокус". Простое использование распиаренного ярлыка для привлечения внимания к продукту своего творчества.

По задумке и эстетике больше всего всего понравились:

Старая Русса Doom pre-release v1.5
The Dark от Oleg Origin

Но это абсолютно свои игры, разве что художественный образ "руки" и стен взяты из Дума.

Действительно хороший порт - Sega Saturn (1997). Там виден и новый собственный рендер, и куски оригинальных уровней/кода. А эффект Scainline и более интересные текстуры делает его эстетически значительно лучше оригинала.

Вариант Телетекст родом из 1979 года. тоже интересен за счёт эстетики (хорошо подобранных цветов + раскадровка как в комиксах).

А все остальные "клавиатуры и памперсы" - может и заслуживают упоминания идей в одну строку через запятую, но интереса ничем не вызывают: ни эстетикой, ни идеей. Половина из них - вариации на тему как подключить другой телевизор/проектор к компьютеру, на котором играют в Дум. Так и я могу: берёшь проектор, и проецируешь дум на стену - вот тебе и Дум на Доме.

Чисто технически (с точки зрения работы программиста) интересен порт на SNES - написанный без доступа к оригинальному исходному коду и нормальной документации/инструментария для работы с Super FX чипом, критичным для достижения хоть какой то производительности на этой приставке.

Можно ещё добавить в список DOOM-ов, нативные порты на китайские портативные консоли в формате PSP. Там было двойное превозмогание, модификацией кода DOOM под кривоватый утёкший SDK, и железо которое под этим SDK работало не всегда корректно.

Жаль, что Спекки на закате своей популярности не получил никакого общепризнанного фэндомом 2Dfx :) Что бы это могло быть, чтобы сам Спекки не превратился в клавиатурный придаток к «видеокарте»? Какие были дешёвые микроконтроллеры, например?

Теоретически ускоритель был создан в конце 1990-х: звуковая карта General Sound. У неё на борту Z80 на 12 МГц и куча быстрого ОЗУ. Всё это дело вместо генерации звука может выполнять произвольный код параллельно хоста и быстрее него. Но в те времена его никто так и не приспособил подобным образом. Единственный раз GS задействовали для ускорения графики только в 2009 году, и это была уже обновлённая версия, вдвое быстрей и с DMA для обмена с хостом.

Пожалуй, самое интересное, на чём был запущен Doom — Doom. Речь идёт про Doom, работающий внутри Doom.

Кажется, Doom уже запустили практически на всём. Но я практически
уверен, что в будущем мы сможем увидеть его новые, ещё более необычные
воплощения.

Всегда будет оставаться возможность запустить Doom внутри того Doom, который уже запущен внутри Doom.

Это тот самый проект, на базе которого сделан Дум в кнопке клавиатуры, который я упомянул, а также Дум в брелке и Дум в кольце. Технически он весьма интересный, так как у RP2040 нет даже столько флеша, чтобы уместить стандартный WAD, и формат WAD был изменён, добавлено сжатие текстур. Рендеринг тоже переделан, чтобы распаковывать текстуры на лету и уменьшить расход ОЗУ, а ещё распараллелен на два ядра.

Насколько я понял, этот порт на RP2040 сделан очень не тривиально. Во первых вывод графики реализован на одно ядре процессора. Во вторых, генерация (вывод) картинки на VGA идет без фрейм буфера, а формируется построчно, на лету. Ну и конечно работа в микроскопическом объёме ОЗУ 264кб

Зарегистрируйтесь на Хабре, чтобы оставить комментарий