2 ポイント 投稿者 GN⁺ 2025-01-14 | 1件のコメント | WhatsAppで共有
  • DoomPDFは、Doom (1993) を PDF 内で実行できるようにした実装で、ゲーム画面と操作ガイドが PDF 文書に含まれている
  • 操作は WASD移動 を中心に、q は esc、z は enter、e は use、space は fire に対応する
  • shift+WASD で sprint、m で map、1-7武器選択 ができる
  • 別ページで custom WAD files をアップロードでき、ソースコードは GitHub リポジトリで公開されている
  • 実行環境は Chromium ベースのブラウザ に限定されており、他の PDF ビューアでは動作は期待しにくい

PDF 内で実行される Doom

  • DoomPDFは PDF 文書形式で提供される Doom (1993) の実行物
  • 文書内にキーボード操作ガイドと方向入力表示が含まれている
  • 動作環境は Chromium ベースのブラウザ に限定される

操作キーと拡張ファイル

  • 基本操作
    • WASD: 移動
    • q: esc
    • z: enter
    • e: use
    • space: fire
  • 追加操作
    • shift+WASD: sprint
    • m: map
    • 1-7: weapons
  • custom WAD files のアップロード: 別ページで WAD ファイルをアップロード可能
  • Source code: DoomPDF のソースコードリポジトリ

1件のコメント

 
GN⁺ 2025-01-14
Hacker Newsのコメント
  • 「PDF Tetris」を作った者です。素晴らしい仕事です!同じ時期に同じアイデアを思いついて、自分のバージョンの PDF Doom もあります
    ソース: https://github.com/thomasRinsma/pdfdoom
    プレイ可能: https://th0mas.nl/downloads/doom.pdf
    それでも、こちらの実装はいろいろな面でよりすっきりしています
    • 「この文書には問題があります」と表示されるけど、問題がなのか文書なのか分からない
  • PDFエンジンの制限されたJSランタイム
    人類はあまりにも遠くまで来てしまった

    • 真面目な話、次の条件を満たす別の形式はあるだろうか?メールやクラウドドライブでアセット・画像・フォントまで簡単に無料で共有でき、フォーム入力と保存をHTTP送信なしでファイル内に直接持てて、文書に含まれる暗号学的署名をエンドユーザーが簡単かつ安全に検証でき、印刷の再現性も完璧な形式のことだ
      EUでは電子署名がDocuSign式の「私はJohn Smithだと誓います」ではなく暗号ベースなので、特に重要だ。PDFには文句を言い続けているが、実際に代替できる形式はない。W3C / WHATWGのようなところがWeb技術ベースで作れるかもしれないが、まだ出ていないし、EPUBは電子書籍配布という狭い用途を解決するだけで、「業務用」の用途は解決できない
    • なぜそんなことを言うのかよく分からない。組み込みスクリプティングはフォーム検証など多くの用途に便利で、十分に複雑な検証システムは結局チューリング完全になる
      それなら専用言語を作るよりJavaScriptに行くほうがよく、JavaScriptと入力、グラフィックのピクセル格子を更新する方法があればDoomを動かせるレベルになる。計算とプログラミング可能性があまりにも安くなって、ごく普通のアプリにも広く入り込んだのは、恐ろしいというより素晴らしいことだと思う
    • 私たちが前に進む方法はそれしかない
  • パンドラの箱が開いた
    次の段階はBellardのJSLinux([https://bellard.org/jslinux/](https://bellard.org/jslinux/))を入れて、開発環境やオフィススイートまで備えた完全なOSをPDFの中に収めることだ
  • Portable Doom Format
    • Chromeの中にあるときだけ可能
    • たった1つのPDFエンジンでしか動かないので、あまりportableではない
  • CSの新入生だったころの印象的な経験の一つに、誤ってPDFを Emacs で開いたら、変なバイナリデータではなく実際にレンダリングされたPDFが表示されたのを見たことがあった
    自分の知らないところで裏でほかに何をしているのか気になった。残念ながらEmacs内のPDFではDoomは動かせなかった。ここで紹介されているものに似た手法をEmacsの標準機能とASCII文字で再実装するか、この記事が2位だったときに1位だったBad Appleのvim記事[1]に似た手法を使うほうが簡単そうだ
    [1]: https://news.ycombinator.com/item?id=42674116
    • 数週間前、誤ってPDFを less で開いたところ、pdftotextと、適切に設定すればページャーが任意の文書を表示するのに使える各種ソフトウェアの存在を知った
      現代のLinuxディストリビューションがファイルの実行方法を決める過程を思い出した。数年前にそれを知ってから、自分のマシンで.exeファイルを実行するとwineやmonoで動くようにしようと、あまりにも長く取り組んでいた。面白い練習ではあったが、その価値はなかった
  • 「type here for keyboard controls」と書かれた領域をクリックすればよい
    始めるにはzを何度か押し、移動はw/a/s/d、使用はe、発射はspace、zはenter
  • HNのトップページ上位4本の中に DoomBad Apple が両方ある。今週は幸先がいい
  • すごい!次は Doom内で動くPDFリーダー
    • それは少し反則だ。PDFリーダーにはリモートコード実行脆弱性が非常に多いので、結局 /XObject <> /Invoke RCE のように見えるだろう
    • PDFリーダーとDoomが無限に続く構造だ
  • PDFは DEFLATE圧縮 をサポートしているので、PDF文書のサイズをかなり減らせそうだ
    • その通り。ネットワークでPDFをより速く転送し、キャッシュにより小さいファイルを入れるのに役立つだろう
      DOOM1.WADファイルくらい小さくできるだろうか?4MBだ
  • これはかなりすっきりしていて、求職時に履歴書の中で直接エンジニアリング成果物を見せる、といった実用的な活用もできそうで創造的だと思う
    ただ、この技術にはほかにどんな用途があるだろう?たとえばiPhoneのような制約の大きいデバイスや、PlayStation・Xbox・キオスクのような管理対象デバイスで、PDFとしてアプリを配布できるだろうか?Adobe Readerを触っていたとき、PDFの中に映画も入れられるし、メニューバーもカスタマイズできるように見えた。思ったよりかなり柔軟な形式のようだ