Doom był już galerią sztuki, Captchą, zakazany przez korporacje, działający na kosiarkach, na klockach Lego, w telewizji tekstowej, a nawet wewnątrz samego siebie. Względy techniczne schodzą na dalszy plan, a jedyną sensowną odpowiedzią jest „bo możemy”. Co będzie dalej? Przez lata użytkownicy wstrzykiwali do dokumentów PDF różne elementy (niektóre całkiem złośliwe), ale użytkownik GitHub o pseudonimie „ading2210” stworzył port który umieszcza Doomguy'a w systemie PDF przeglądarki Google Chrome.

Doom w PDF-ie? Tak, Doom w PDF-ie
Doom w PDF-ie? Tak, Doom w PDF-ie

Kiedy myślimy o dokumentach PDF, automatycznie przychodzi nam do głowy sztywny format, trudny do zmodyfikowania bez zewnętrznej pomocy. Jednak nie wszyscy wiedzą, że PDF obsługuje JavaScript. Jedynym programem, który w pełni go wdrożył, był Adobe Acrobat, z funkcjami takimi jak renderowanie 3D i żądania HTTP. Natomiast wsparcie w przeglądarkach takich jak Chrome i Firefox jest znacznie bardziej ograniczone (wspominając kwestie bezpieczeństwa)… ale to nie wystarczy, aby powstrzymać „ading2210” na GitHubie. Co zrobił? Uruchomił Dooma w pliku PDF.

DoomPDF: „Rip and tear” w dokumencie PDF

Doom w PDF-ie? Tak, Doom w PDF-ie
Był dostępny film, ale nie ładuje się poprawnie. Tak wygląda Doom w pliku PDF w przeglądarce Chrome/Chromium (nie działa w innych czytnikach).

Jak to dokładnie działa? „ading2210” wyjaśnia, że kod w C można skompilować do działania wewnątrz pliku PDF, używając starej wersji Emscripten, która celuje w asm.js zamiast WebAssembly. Reszta to kwestia opracowania ścieżki rejestrującej polecenia wejściowe oraz bufora ramek dla wyjścia. Wejścia są proste, ponieważ silnik PDF w Chromium obsługuje pola tekstowe i przyciski. Bufor ramek to zupełnie inna historia, ale „ading2210” poradził sobie z wyświetlaniem wyjścia w sześciu odcieniach monochromatycznego ASCII, a każda klatka ma średnie opóźnienie 80 milisekund.

W skrócie: wygląda źle, ale to nie ma znaczenia. Jedynym sposobem na poprawne uruchomienie DoomPDF jest użycie jakiejś odmiany Chromium, a do sterowania Doomguy'em trzeba „pisać” w małej sekcji dokumentu. Oczywiście problemy z liczbą klatek czynią go prawie niemożliwym do grania, ale wyobrażam sobie, że niejeden śmiałek w przeszłości zaakceptował podobną wydajność, aby „cieszyć się” nim na 386.

Oficjalne strony: Tutaj i tutaj.