
Anda mungkin menganggap PDF sebagai dokumen statis, yang dimaksudkan hanya untuk kata-kata, gambar, dan terkadang bentuk. Namun, browser modern dapat membuka lebih banyak fitur untuk dokumen PDF, sebagaimana dibuktikan dengan port baru Tetris dan DOOM.
Thomas Rinsma, seorang analis dan pengembang keamanan, menerbitkan demonstrasi kerja permainan puzzle klasik Tetris yang dijalankan seluruhnya dalam PDF. Ini dapat dimainkan di Google Chrome dan browser lain yang berbasis Chromium, serta Mozilla Firefox. Anda dapat mencobanya dengan file PDF di website Rinsma.
Postingan blog tersebut menjelaskan, “Sudah diketahui umum bahwa PDF bisa menjadi sangat kaya fitur ketika dibuka di Adobe Acrobat/Reader, dengan dukungan skrip untuk formulir dan konten dinamis lainnya. Namun, ternyata PDFium (pembaca PDF Chromium) dan PDF.js (Firefox) juga menerapkan sedikit dukungan skrip. […] PDF dapat berisi kolom input teks, tombol, kotak centang, dan sebagainya. Penangan JavaScript dapat dikaitkan dengan peristiwa di widget tersebut (“bidang”), dan properti bidang ini dapat dimodifikasi dari dalam JavaScript.”
Pada dasarnya, fungsi skrip yang dimaksudkan untuk memeriksa isi formulir dapat digunakan kembali untuk mengubah isi PDF. Dokumen tersebut membuat kisi-kisi tombol yang dapat ditampilkan atau disembunyikan secara terprogram, bertindak sebagai piksel. Permainan ini dikontrol melalui tombol yang dapat diklik, atau tombol keyboard yang diketikkan ke dalam kolom teks.
Rinsma kemudian mengambil konsep ini selangkah lebih maju, menyelesaikan porting game penembak orang pertama DOOM tahun 1993 ke PDF. Ini didasarkan pada proyek DOOM-ASCII, versi fungsional DOOM yang dapat dimainkan di lingkungan hanya teks dengan karakter ASCII, dikompilasi untuk browser web menggunakan WebAssembly dan Emscripten. Anda dapat mencoba DoomPDF di browser web Anda—yang ini hanya berfungsi dengan browser berbasis Chrome dan Chromium saat ini.
Port DOOM jelas lambat di Chrome 134 pada M1 Mac Mini saya, tetapi berhasil. Postingan blog tersebut menyebutkan bahwa tampilan gamenya monokrom, bukan berwarna seperti proyek DOOM-ASCII asli, karena warna tombol 'piksel' tidak dapat diperbarui tanpa menukarnya dengan elemen lain. Rinsma menjelaskan, “Bahkan untuk layar GameBoy (160x144x3), luasnya hampir 70 ribu bidang, sehingga memperlambat segalanya.”
Kode sumber untuk PDF Tetris dan DoomPDF tersedia di GitHub. Ini akan cocok dengan port DOOM II terbaru pada mesin pinball.
Sumber: Thomas Rinsma