«Тетрис» и Doom выпустили в формате PDF
Аналитик по безопасности Томас Ринсма упаковал классическую игру «Тетрис» в формат PDF и назвал разработку Pdftris, сообщает Tom`s Hardware. В головоломку с падающими блоками можно играть в большинстве браузеров. Другой разработчик проделал то же самое, но с игрой Doom.
О Pdftris известно немного, потому что на странице GitHub нет описания. Но Ринсма охотно общался с пользователями на Hacker News и рассказывал о разработке. Идея сделать игру в необычном формате пришла ему в голову после того, как он понял, что PDF-движки современных браузеров (PDFium и PDF.js) поддерживают JavaScript с достаточным набором функций ввода-вывода для создания простого проекта вроде «Тетриса».
Аналитик по безопасности рассказал, что ему было нелегко заставить свой «Тетрис» правильно работать в обоих движках. Но он нашел решение: «Показ и скрытие полей аннотаций хорошо подходит для создания монохромных пикселей». Кроме того, Ринсма добавил возможность управления с клавиатуры через текстовое поле под игрой.
Разработчик скромно признает, что код его «Тетриса» в PDF «довольно корявый». Однако он считает, что это показывает, насколько мощными и гибкими могут быть скрипты в PDF. Чтобы посмотреть, что внутри Pdftris, не нужны никакие сложные программы. Необходимо просто скачать PDF-файл размером 60 КБ и открыть его в обычном текстовом редакторе — это текст в кодировке ASCII. Также есть более понятный исходный код с комментариями. Он доступен на странице проекта на GitHub.
Между тем, разработчик под псевдонимом ading2210 создал проект DoomPDF — версию игры Doom, которая тоже работает прямо в браузере через PDF-файл. Код игры написан на C и размещен на GitHub. Этот проект работает только в браузерах Chromium благодаря движку PDFium.
PDF-движок Chromium поддерживает текстовые поля и кнопки, однако создание быстрого и качественного буфера кадра оказалось сложной задачей. Вместо отрисовки каждого пикселя отдельным текстовым полем (что было бы неэффективно при разрешении Doom 320×200), используется одно текстовое поле на строку экрана, заполняемое символами ASCII. Это позволило добиться 6-цветного монохромного вывода.
Этот способ отрисовки довольно медленный — обновление текста занимает примерно 80 миллисекунд на кадр. Но для игры этого достаточно. Также была сделана прокручиваемая текстовая консоль из 25 текстовых полей.
Ранее ретроконсоль Nintendo Game Boy превратили в необычную фоторамку.