Недавно вышла занятная статья на Хабре про способ реализации машины Тьюринга в Doom:
Ссылка Суть в том, что можно благодаря примитивным логическим вентилям (or, not, and) и морю свободного времени можно создать даже примитивный процессор.
Принцип схож с куклами вуду, но здесь в роли сигналов выступают бегущие в сторону игрока монстры, активирующие лифты. К сожалению, на выходе "программы" будет такой же временно опускающися лифт, либо дверь или телепортирующийся монстр.
Например, автор создал полусумматор. Это схема, принимающая 2 сигнала - единицы, и выдающая либо 0, либо 1, либо 2, в рамках бинарной логики, разумеется.
Карта с примером Возможно, кто-то о подобном уже знал, если у вас есть примеры или свои наработки использования, было бы здорово их посмотреть.
Полноценный комп может быть сложно и не нужно, но вот разнообразить геймплей ванильных вадов это бы позволило точно. Вроде кто-то что-то такое делал, но не вспомню, кто.
Как мысли совпадают. Буквально два месяца назад придумал (запомнил, но не реализовал), как сделать в Doom полный сумматор на несколько бит. И да, там бы использовались именно что телепортирующиеся монстры и двери/лифты.
Сумматор для меня является универсальным индикатором пригодности игры для создания логических схем -- вот такое вот нетривиальное увлечение для достаточно изученных компьютерных игр. Если удаётся создать стабильные бинарные примитивы или хотя бы их часть, а из них собрать сумматор, значит, в теории, по правилам самой игры законно можно сделать что угодно (на практике почти всегда есть препятствие вроде лимита объектов на уровне).
К примеру, вот скриншот реализации полного однобитного сумматора в игре "The Incredible Machine 2" на мышках, шестернях, шкивах, конвейерах, двигателях и генераторах. Использованы операторы AND, OR и NOT -- и последний из-за ограничений, похожих на описанные в статье в шапке темы, реализован как XOR на единицу:
Скрытый текст:
Если кому интересно, могу записать, как это чудо работает.
Не так давно появилось видео, в котором человек под ником kgsws обнаружил уязвимость в коде оригинального Doom, связанный с обработкой кодпоинтеров, и на основе него создал несколько тестовых программ. К примеру, запустил Heretic внутри Doom со всеми осоенностями первого — и это ещё не самый неожиданный проект.
.
* * *
Также не могу не поделиться, пусть это и не совсем Doom, вернее даже, совсем не Doom. Однако по теме далеко не обычного портирования.
На StackExchange ещё почти десять лет назад был проведён конкурс, на котором было необходимо создать полнофункциональный тетрис на основе автомата игры "Жизнь". Теоретическое и даже практическое обоснование для этого было, так как существует, к примеру, вот такой мегапримитив на правилах "Жизни", который позволяет эмулировать любые иные правила этой игры и вообще является Тьюринг-полным.
Участниками были созданы полноценные логические вентили и уже на основе них собран процессор для игры в тетрис. Это, к примеру, операторы AND, XOR и OR: