Doom als Kunstgalerie, in ein Captcha verwandelt, von Unternehmen verboten, auf Rasenmähern laufend, in Lego-Steinen, in Videotext, sogar in sich selbst. Die technischen Gründe treten in den Hintergrund, und die einzige gültige Antwort ist „weil wir können“.

Was kommt als Nächstes? Seit Jahren haben Nutzer alle möglichen Elemente (einige davon ziemlich bösartig) in PDF-Dokumente eingebettet, aber der GitHub-Nutzer „adding2210“ hat einen Port erstellt, der den Doomguy im PDF-System von Google Chrome erscheinen lässt.

Doom in einer PDF-Datei? Ja, Doom in einer PDF-Datei
Doom in einer PDF-Datei? Ja, Doom in einer PDF-Datei

Wenn wir an PDF-Dokumente denken, kommt uns automatisch ein starres Format in den Sinn, dessen Inhalt ohne externe Hilfe schwer zu verändern ist. Doch nicht jeder weiß, dass PDF JavaScript unterstützt. Das einzige Programm, das es vollständig implementiert, war Adobe Acrobat, mit Funktionen wie 3D-Rendering und HTTP-Anfragen. Die Unterstützung in Browsern wie Chrome und Firefox ist jedoch viel eingeschränkter (mit Verweis auf Sicherheitsfragen)… aber das reicht nicht, um adding2210 auf GitHub aufzuhalten. Was hat er getan? Doom in einer PDF-Datei ausführen.

DoomPDF: „Rip and tear“ in einem PDF-Dokument

Doom in einer PDF-Datei? Ja, Doom in einer PDF-Datei
Es gab ein Video, aber es wird nicht richtig geladen. So sieht Doom in einem PDF in Chrome/Chromium aus (funktioniert nicht mit anderen Readern).

Wie genau funktioniert das? „adding2210“ erklärt, dass der C-Code so kompiliert werden kann, dass er innerhalb einer PDF-Datei läuft, indem man eine alte Version von Emscripten verwendet, die auf asm.js statt WebAssembly abzielt. Der Rest ist eine Frage der Entwicklung einer Möglichkeit, Eingabebefehle zu registrieren und eines Framebuffers für die Ausgabe. Die Eingaben sind einfach, da die PDF-Engine von Chromium Textfelder und Schaltflächen unterstützt. Der Framebuffer ist eine ganz andere Geschichte, aber „adding2210“ hat es geschafft, eine sechsstufige monochrome Ausgabe in reinem ASCII zu präsentieren, und jeder Frame hat eine durchschnittliche Latenz von 80 Millisekunden.

Zusammenfassend sieht es schlecht aus, aber das spielt keine Rolle. Der einzige Weg, DoomPDF korrekt auszuführen, ist die Verwendung einer Chromium-Variante, und um den Doomguy zu steuern, muss man in einen kleinen Bereich des Dokuments „schreiben“. Offensichtlich machen die Framerate-Probleme es fast unmöglich zu spielen, aber ich stelle mir vor, dass mehr als ein Draufgänger in der Vergangenheit eine ähnliche Leistung akzeptiert hat, um es auf einem 386 zu „genießen“.

Offizielle Websites: Hier und hier.