DOOM запустили на регулярных выражениях: кадр отрисовывается минутами
Классический шутер DOOM снова удивляет: на этот раз его запустили с помощью регулярных выражений. Энтузиаст под ником Xe создал порт, который воспроизводит игровой процесс, но с чудовищной скоростью — один кадр может отрисовываться несколько минут. Это не шутка: код использует текстовые шаблоны для

Классический шутер DOOM снова удивляет: на этот раз его запустили с помощью регулярных выражений. Энтузиаст под ником Xe создал порт, который воспроизводит игровой процесс, но с чудовищной скоростью — один кадр может отрисовываться несколько минут. Это не шутка: код использует текстовые шаблоны для рендеринга графики, превращая каждый пиксель в символ. Проект демонстрирует, насколько гибким может быть программирование, хотя играть в такой DOOM практически невозможно.
DOOM на регулярных выражениях: как это работает
Регулярные выражения — это язык для поиска и обработки текста, который не предназначен для графики или игр. Однако Xe создал специальный «движок», который интерпретирует игровую логику и рендеринг через цепочки regex. Каждый пиксель экрана кодируется как текстовый символ, а кадр — как огромная строка, обрабатываемая регулярными выражениями. В результате DOOM запускается, но производительность катастрофически низкая: на отрисовку одного кадра уходят минуты. Система использует библиотеку PCRE2 для выполнения шаблонов, а игровой мир преобразуется в текстовую матрицу размером примерно 320×200 символов. Самая затратная операция — перестроение всей матрицы при каждом кадре, что и вызывает такие задержки.
Почему регулярные выражения так медленно обрабатывают графику?
Современные движки regex не оптимизированы для работы с большими объёмами данных и сложными преобразованиями. В отличие от графических API, которые используют аппаратное ускорение, регулярные выражения работают на уровне текста и требуют огромных вычислительных ресурсов для каждой операции. Даже простые действия, такие как обновление положения врагов или пуль, требуют перестроения всей строки, что занимает минуты. Это делает порт неиграбельным, но идеально подходит для демонстрации границ возможностей регулярных выражений.
Предыстория и контекст
DOOM — один из самых портируемых проектов в истории. Его исходный код был открыт в 1997 году, что позволило программистам адаптировать игру для любых устройств. Запуск на regex — логичное продолжение этой традиции, но скорее в жанре «сделай сам» и технологического юмора. Ранее DOOM запускали на тестере беременности, в PDF-файлах, на умных колонках и даже на бактериях. Каждый новый порт — это вызов инженерной мысли и демонстрация гибкости кода. Проект Xe выделяется тем, что использует не аппаратные или программные ограничения, а абстрактный слой обработки текста.
Чем это отличается от обычного портирования?
Обычные порты DOOM компилируют исходный код под новую платформу, используя графические API, такие как OpenGL или Vulkan. Здесь же весь рендеринг заменён на текстовую обработку. Это не порт в классическом смысле, а эмуляция через абстрактный слой. Такой подход намеренно неэффективен — это исследование границ возможностей регулярных выражений, а не практическое решение. В отличие от портов на банкоматы или калькуляторы, где игра становится хотя бы теоретически играбельной, regex-версия остаётся чисто демонстрационной.
Технические подробности: как regex справляется с графикой
Проект Xe использует библиотеку PCRE2 для выполнения регулярных выражений. Игровой мир преобразуется в текстовую матрицу: каждый пиксель — символ, а кадр — строка размером примерно 320×200 символов. Регулярные выражения применяются для обновления положения врагов, пуль, текстур и HUD. Самая затратная операция — перестроение всей матрицы при каждом кадре. Современные движки regex не оптимизированы для таких объёмов, отсюда и минуты на кадр. Для сравнения, обычный DOOM работает при 35 кадрах в секунду, а здесь один кадр может отрисовываться до пяти минут. Это делает проект скорее технологическим курьёзом, чем реальным способом поиграть.
Кого затронет и как
Этот проект вряд ли заинтересует геймеров — играть в DOOM с такой скоростью невозможно. Однако для разработчиков и энтузиастов это демонстрация того, как далеко можно зайти в абстракции. Возможно, техника пригодится в образовательных целях: например, для обучения работе с регулярными выражениями или для изучения архитектуры DOOM. В России и СНГ такие проекты популярны среди ретро-энтузиастов и на хакерских форумах. Код опубликован на GitHub, так что любой желающий может изучить его и попробовать улучшить.
Что будет дальше
Xe не планирует оптимизировать порт — это разовый эксперимент. Однако он опубликовал код на GitHub, так что другие могут попробовать улучшить производительность. Теоретически, можно ускорить рендеринг, используя более эффективные алгоритмы regex или распараллеливание. Но вряд ли кто-то доведёт проект до играбельного состояния — это нецелесообразно. Скорее всего, порт останется в истории как один из самых необычных способов запустить DOOM. Возможно, в будущем появятся новые эксперименты с regex, но пока это лишь забавный трюк.
Итог
Запуск DOOM на регулярных выражениях — впечатляющий технологический трюк, который подчёркивает гибкость игры и изобретательность сообщества. Хотя практического применения у порта нет, он служит напоминанием: границы возможного существуют только в воображении. Следите за новыми экспериментами — DOOM ещё не раз удивит. Если вы хотите узнать больше о необычных портах, следите за новостями в мире ретро-гейминга.