«Тетрис» и Doom выпустили в формате PDF

Тетрис на Game Boy возле фигурок из игры
Программист создал необычную версию Тетриса. Источник: Unsplash

Аналитик по безопасности Томас Ринсма упаковал классическую игру «Тетрис» в формат PDF и назвал разработку Pdftris, сообщает Tom`s Hardware. В головоломку с падающими блоками можно играть в большинстве браузеров. Другой разработчик проделал то же самое, но с игрой Doom. 

О Pdftris известно немного, потому что на странице GitHub нет описания. Но Ринсма охотно общался с пользователями на Hacker News и рассказывал о разработке. Идея сделать игру в необычном формате пришла ему в голову после того, как он понял, что PDF-движки современных браузеров (PDFium и PDF.js) поддерживают JavaScript с достаточным набором функций ввода-вывода для создания простого проекта вроде «Тетриса».

скриншот Pdftris
Тетрис в PDF.Источник: Future

Аналитик по безопасности рассказал, что ему было нелегко заставить свой «Тетрис» правильно работать в обоих движках. Но он нашел решение: «Показ и скрытие полей аннотаций хорошо подходит для создания монохромных пикселей». Кроме того, Ринсма добавил возможность управления с клавиатуры через текстовое поле под игрой.

Разработчик скромно признает, что код его «Тетриса» в PDF «довольно корявый». Однако он считает, что это показывает, насколько мощными и гибкими могут быть скрипты в PDF. Чтобы посмотреть, что внутри Pdftris, не нужны никакие сложные программы. Необходимо просто скачать PDF-файл размером 60 КБ и открыть его в обычном текстовом редакторе — это текст в кодировке ASCII. Также есть более понятный исходный код с комментариями. Он доступен на странице проекта на GitHub.

Между тем, разработчик под псевдонимом ading2210 создал проект DoomPDF — версию игры Doom, которая тоже работает прямо в браузере через PDF-файл. Код игры написан на C и размещен на GitHub. Этот проект работает только в браузерах Chromium благодаря движку PDFium.

скриншот Doom в PDF
Так выглядит Doom в PDF-формате. Источник: GitHub

PDF-движок Chromium поддерживает текстовые поля и кнопки, однако создание быстрого и качественного буфера кадра оказалось сложной задачей. Вместо отрисовки каждого пикселя отдельным текстовым полем (что было бы неэффективно при разрешении Doom 320×200), используется одно текстовое поле на строку экрана, заполняемое символами ASCII. Это позволило добиться 6-цветного монохромного вывода.

Этот способ отрисовки довольно медленный — обновление текста занимает примерно 80 миллисекунд на кадр. Но для игры этого достаточно. Также была сделана прокручиваемая текстовая консоль из 25 текстовых полей.

Ранее ретроконсоль Nintendo Game Boy превратили в необычную фоторамку.

©  HI-TECH@Mail.Ru