Egy lelkes és kreatív főiskolai hallgató meglepően érdekes projektbe vágott: azt a célt tűzte ki, hogy elkészíti az ikonikus játék, a Doom speciális, PDF fájlban futó verzióját, a gondolatot pedig tett követte és végül sikerrel is járt. A különleges környezet használatára azért nyílt lehetősége, mert a PDF konténer lehetősége biztosít a JavaScript használatára, igaz, az eredeti képességek jó részét tiltják, ami biztonsági célokat szolgál.
Alapvetően megoldható, hogy háromdimenziós renderelést végezzen az Adobe Acrobat platform, hála az általa támogatott szerteágazó JS specifikációnak, ám az efféle funkciókat nem igazán használják, legalábbis szélesebb körben, hiszen biztonsági kockázatokat jelentenek az efféle programok. Ennek persze némileg ellentmond, hogy nemrégiben PDF formátumú Tetris is készült, ami szintén nagy port kavart.
No de térjünk vissza a Doom PDF formátumban futó változatára, ami a többség számára azért mégis csak érdekesebb, mint egy egyszerű Tetris. Az Ading2210 becenév alatt tevékenykedő főiskolai hallgató egy Chromium alapú webböngészőt választott a projekthez, ám a modern webböngészők a hivatalosan támogatott JS specifikációnak csak egy kisebb szeletét kezelik, pont azért, hogy csökkenjen a támadási felület, biztonságosabb legyen a működés.
A Doom PDF esetében a C-ben megírt kódot egy régi verziójú Emscripten segítségével sikerült lefordítani, ami az asm.js-t célozza, nem pedig a WebAssembly-t. Ennek köszönhetően a kód gond nélkül tud futni az adott webböngésző PDF kezelő moduljának limitált JS környezetében is. A beviteli parancsokat a Chromium webböngésző PDF motorján keresztül sikerül továbbítani a játék felé, ehhez a motor szövegmezőkhöz és gombokhoz kapcsolódó támogatását veszik igénybe, így nemcsak a mozgás válik irányíthatóvá, de a térképpel és a fegyverekkel kapcsolatos műveletek elvégzésére is lehetőség nyílik. A doomgeneric forráskód köré épülő port esetében persze jelentkeztek kihívások is, már ami a vizuális megjelenítést és a képkocka-buffert illeti.
A kész végeredmény meglepően részletes lett, pedig ASCII karakterek köré épül és csak hat szürke-árnyalatot használ, azaz a kontraszt nem valami erős. A fejlesztő szerint a korábbi PDF alapú játékok esetében egyszerűbb volt a helyzet, ugyanis egyedi szövegmezőket lehetett pixelként használni, amelyeket ki- és be lehetett kapcsolgatni, így a pixelek megjelenítése viszonylag zökkenőmentesen ment. A 320 x 240 pixeles felbontás esetében ez a módszer összesen 64 000 ilyen szövegmező gyors ki- és bekapcsolását igényelné, ami ennél a projektnél megvalósíthatatlan volt.
Éppen ezért másféle módszert kellett keresni: az egyes pixeleket alkotó szövegdobozok helyett Ading2210 inkább minden egyes megjelenő pixelsorhoz külön szövegdobozt rendelt, amelyekben a fentebb említett ASCII kódok kaptak helyet, méghozzá hatféle szürkeárnyalatban. Ez a renderelési módszer már egész jól működik, viszont a klasszikus játékokhoz képest alacsonyabb sebességre számíthatunk: nagyjából 80 ezredmásodperc alatt készül el egy teljes képkocka az ASCII karakterek felhasználásával, ami nagyjából 12,5 FPS teljesítményt eredményez. Ez ugyan valamivel jobb, mint a diavetítés, kis túlzással játszhatónak is nevezhető, de itt nem is ez a lényeg, hanem maga a fegyvertény, hogy már PDF verzió is készült a Doom-ból.
Az ikonikus játékot sok-sokérdekes platformra portolták már az elmúlt évek folyamán, például robotfűnyíró beépített kijelzőjére, billentyűzetek kijelzővel ellátott billentyűsapkáira, illetve még a Jegyzettömbbe is (Notepad). Aki ki szeretné próbálni a Doom PDF alapú változatát, itt találja azt.