Классический шутер Doom, выпущенный в 1993 году разработчиками из американской студии id Software, продолжает вдохновлять моддеров. Совсем недавно Аллен Динг, известный под псевдонимом ading2210 на GitHub, представил свой проект DoomPDF — порт оригинальной Doom, который работает внутри PDF-файла.
DoomPDF использует отдельное текстовое поле для каждой строки, заполняя их различными символами ASCII. Это решение позволило добиться 6-цветного монохромного вывода, обеспечивая приемлемую разборчивость изображения. Хотя производительность при использовании этого метода оставляет желать лучшего — обновление текста занимает около 80 мс на один кадр — игра по-прежнему остается играбельной.
Динг предупреждает, что порт запускается только в браузерах на базе Chromium, включая Google Chrome, Microsoft Edge и Opera. Интересно, что лишь на днях другой разработчик, Томас Ринсма, адаптировал для PDF легендарную головоломку Tetris, однако Динг успел выпустить порт Doom быстрее.
На протяжении многих лет любители игры запускали Doom в самых неожиданных местах — от покерного роглайка Balatro до умного будильника Nintendo. Динг добавляет еще один нестандартный способ насладиться культовым шутером, используя потенциал формата PDF.
В отчете о проекте разработчик объясняет технические аспекты порта. Формат PDF поддерживает Javascript с отдельной стандартной библиотекой, что на первый взгляд кажется удивительным, учитывая, что PDF обычно ассоциируется с статическими документами. Однако, по словам Динга, API, доступные в браузерах, имеют значительные ограничения из-за соображений безопасности, что добавляет сложности в процессе разработки.
Как отметил автор, “Можно было бы ожидать, что файлы PDF будут состоять только из статических документов, но, как ни странно, формат файла PDF поддерживает Javascript с собственной библиотекой”. Динг смог реализовать свой проект благодаря старой версии Emscripten, которая позволяет компилировать код на C для работы в PDF-файле.
Вместо использования тысяч текстовых полей для каждого пикселя, что было бы неосуществимо, порт использует отдельное текстовое поле для каждой строки на экране, устанавливая их содержимое в символы ASCII. “Я также реализовал прокручиваемую текстовую консоль с использованием 25 сложенных текстовых полей”, — добавляет Динг.
DoomPDF представляет собой интересный пример того, как современные технологии могут быть использованы для вдохновения и креативного решения, позволяя геймерам испытать классику в совершенно новой оболочке. Ссылаясь на разнообразие предыдущих модификаций Doom, сложно не видеть в этом новом проекте значимый шаг вперед для сообщества моддинга.
