iLenta Меню

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

13 січня 2025, 21:08 | Roter [489]
Хоча PDF-файли зазвичай асоціюються зі статичними документами, вони підтримують JavaScript. Цим і скористалися хитромудрі програмісти.
Ігри «Тетріс» та 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 текстових полів.

Джерело: tomshardware

© 2012-2025 iLenta. Всі права захищені.
Повна версія

Різне

Google знову хоче перетворити YouTube на месенджер
Google знову хоче перетворити YouTube на месенджер
19 листопада 2025, 23:07 | Roter
Компанія Google, схоже, не втрачає надії зробити свій месенджер.
Докладніше...
 
Cloudflare пояснила, що призвело до глобального збою інтернету 18 листопада
Cloudflare пояснила, що призвело до глобального збою інтернету 18 листопада
19 листопада 2025, 13:07 | Roter
Це не DDoS-атака і навіть не помилка в системі DNS.
Докладніше...
 
Сервіс Google Calendar тепер дозволяє створювати тайм-блоки
Сервіс Google Calendar тепер дозволяє створювати тайм-блоки
18 листопада 2025, 18:08 | Bazelas
Google розширила можливості сервісу Google Calendar, додавши нову функцію, завдяки якій користувачі можуть створювати тайм-блоки — виділені часи для виконання конкретних завдань.
Докладніше...
 
Представлено безлопатевий обігрівач-вентилятор Dyson AM15
Представлено безлопатевий обігрівач-вентилятор Dyson AM15
17 листопада 2025, 23:07 | Bazelas
Dyson представила новий безлопатевий обігрівач-вентилятор AM15, який став потужнішим, тихішим і розумнішим.
Докладніше...
 
TCL показала друкований OLED-екран та 8K-дисплей з частотою 1000 Гц
TCL показала друкований OLED-екран та 8K-дисплей з частотою 1000 Гц
17 листопада 2025, 17:07 | Anton Petrov
На конференції DTC2025 компанія TCL CSOT провела демонстрацію передових розробок у галузі дисплейних технологій.
Докладніше...
 
Сторінки: 1 2 3 4 5 6
Повна версія
 
© 2012-2025 iLenta. All rights reserved.