DOOM запустили на PDF

Автора вдохновил тетрис внутри PDF

Энтузиаст с ником ading2210 смог запустить легендарный шутер DOOM внутри PDF-файла. Для этого он воспользовался возможностью обработки JavaScript PDF-движком, который используется в браузерах на базе проекта Chromium. В качестве базы послужил код проект doomgeneric — специальной реализации движка DOOM с минимальными зависимостями для облегчения портирования и запуска на различных платформах. Чтобы встроить игру внутрь PDF, ее код сначала был скомпилирован в подмножество JavaScript, предназначенное для выполнения с высокой производительностью (asm.js). Интерфейс игры и пользовательский ввод реализованы с помощью текстовых полей и кнопок — стандартных объектов, которые поддерживает PDF-движок. Каждая строка экрана представляет собой отдельное текстовое поле, содержимое которого заполняется различными ASCII-символами. Это позволило добиться монохромного изображения с шестью оттенками. Обновление всех текстовых строк занимает около 80 миллисекунд на один кадр. Также автор добавил в документ консоль из 25 текстовых полей, с помощью которых на экран выводится дополнительная техническая информация. Файл с игрой и исходный код доступны на GitHub.

По словам автора, источником его вдохновения стал pdftris — проект разработчика Томаса Ринсма из Нидерландов, который ранее смог реализовать знаменитую головоломку тетрис внутри PDF-документа. На единственной странице документа находится игровое поле, состоящее стандартных объектов PDF, которые обычно используются для отображения аннотаций и форм. Под управлением кода на JavaScript они появляются и исчезают, имитируя движение фигур. После окончания игры пользователи могут сохранить свой результат, распечатав страницу на принтере. Кстати, Томас Ринсма также сделал свой вариант DOOM внутри PDF и опубликовал его немного раньше, но качество изображения на экране несколько хуже, чем в реализации от ading2210.