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 repository
  • สภาพแวดล้อมที่รองรับถูกจำกัดไว้ที่ เบราว์เซอร์ที่ใช้ Chromium ทำให้ยากที่จะคาดหวังว่าจะทำงานได้ใน PDF viewer อื่น

Doom ที่รันอยู่ใน PDF

  • DoomPDF คือ Doom (1993) เวอร์ชันที่ให้มาในรูปแบบเอกสาร PDF
  • ภายในเอกสารมีคำแนะนำการควบคุมด้วยคีย์บอร์ดและตัวบอกทิศทางการป้อนข้อมูลรวมอยู่ด้วย
  • สภาพแวดล้อมการทำงานถูกจำกัดไว้ที่ เบราว์เซอร์ที่ใช้ 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
    ถึงอย่างนั้น implementation ฝั่งนี้ก็เรียบร้อยกว่าในหลายด้าน
    • มันขึ้นว่า "เอกสารนี้มีปัญหา" แต่ไม่รู้ว่าปัญหาคือ ผม หรือเอกสารกันแน่
  • JS runtime ที่จำกัดของ PDF engine
    มนุษยชาติมาไกลเกินไปแล้ว

    • ถ้าพูดจริงจัง มีฟอร์แมตอื่นไหมที่ตรงเงื่อนไขต่อไปนี้: แชร์ asset, รูปภาพ, ฟอนต์ได้ง่ายและฟรีผ่านอีเมลหรือ cloud drive, เก็บการกรอกฟอร์มและการบันทึกไว้ในไฟล์ได้โดยตรงโดยไม่ต้องส่งผ่าน HTTP, ผู้ใช้ปลายทางสามารถตรวจสอบ ลายเซ็นเชิงเข้ารหัส ที่ฝังอยู่ในเอกสารได้อย่างง่ายและปลอดภัย และมีความแม่นยำในการพิมพ์สมบูรณ์แบบ
      ใน EU เรื่องนี้สำคัญเป็นพิเศษ เพราะลายเซ็นอิเล็กทรอนิกส์ไม่ได้เป็นแบบ DocuSign ที่ว่า "ฉันสาบานว่าฉันคือ John Smith" แต่เป็นแบบอิงการเข้ารหัส เราบ่นเรื่อง PDF กันอยู่เรื่อย ๆ แต่ในความเป็นจริงไม่มีฟอร์แมตไหนมาแทนได้จริง ๆ องค์กรอย่าง W3C / WHATWG อาจทำขึ้นโดยอิงเทคโนโลยีเว็บได้ แต่ตอนนี้ก็ยังไม่มี ส่วน EPUB แก้ได้แค่กรณีใช้งานแคบ ๆ อย่างการแจกจ่าย e-book ไม่ได้แก้กรณีใช้งาน "ทางธุรกิจ"
    • ไม่ค่อยเข้าใจว่าทำไมถึงพูดแบบนี้ scripting ในตัวมีประโยชน์หลายอย่าง เช่น การตรวจสอบฟอร์ม และระบบตรวจสอบที่ซับซ้อนพอ สุดท้ายก็จะ Turing complete อยู่ดี
      ถ้าอย่างนั้นแทนที่จะสร้างภาษาเฉพาะขึ้นมา ใช้ JavaScript ไปเลยน่าจะดีกว่า และถ้ามี JavaScript, input, กับวิธีอัปเดตกริดพิกเซลกราฟิก ก็ถึงระดับที่รัน Doom ได้แล้ว ผมมองว่าการที่การคำนวณและความสามารถในการโปรแกรมมีต้นทุนถูกมากจนแพร่เข้าไปอยู่ในแอปธรรมดาที่สุดนั้นเป็นเรื่องเจ๋งมากกว่าน่ากลัว
    • นั่นเป็นวิธีเดียวที่เราจะเดินหน้าต่อไปได้
  • กล่องแพนโดรา ถูกเปิดแล้ว
    ขั้นต่อไปคือใส่ JSLinux ของ Bellard(https://bellard.org/jslinux/) เข้าไป แล้วบรรจุระบบปฏิบัติการเต็มรูปแบบที่มีทั้งสภาพแวดล้อมพัฒนาและชุดออฟฟิศไว้ใน PDF
  • Portable Doom Format
    • ทำได้เฉพาะตอนอยู่ใน Chrome เท่านั้น
    • มันทำงานได้กับ PDF engine แค่ตัวเดียว เลยไม่ได้ portable ขนาดนั้น
  • หนึ่งในประสบการณ์ที่หล่อหลอมผมตอนเป็นนักศึกษาปีหนึ่ง CS คือครั้งหนึ่งเผลอเปิด PDF ด้วย Emacs แล้วเห็นว่ามันแสดง PDF ที่เรนเดอร์จริง ๆ ไม่ใช่ข้อมูลไบนารีประหลาด ๆ
    มันทำให้สงสัยว่าข้างหลังมันยังทำอะไรอีกบ้างโดยที่ผมไม่รู้ น่าเสียดายที่รัน Doom ใน PDF ภายใน Emacs ไม่ได้ คิดว่าน่าจะง่ายกว่าถ้าทำเทคนิคคล้าย ๆ ที่นี่ขึ้นมาใหม่ด้วยฟีเจอร์พื้นฐานของ Emacs และอักขระ ASCII หรือใช้เทคนิคคล้ายกับโพสต์ Bad Apple vim[1] ที่อยู่อันดับ 1 ตอนบทความนี้อยู่อันดับ 2
    [1]: https://news.ycombinator.com/item?id=42674116
    • ไม่กี่สัปดาห์ก่อนผมเผลอเปิด PDF ด้วย less แล้วได้รู้จัก pdftotext และซอฟต์แวร์หลายตัวที่ถ้าตั้งค่าถูกต้อง pager ก็ใช้แสดงเอกสารสารพัดแบบได้
      มันทำให้นึกถึงกระบวนการที่ Linux distro สมัยใหม่ใช้ตัดสินใจว่าจะรันไฟล์อย่างไร หลังจากรู้เรื่องนั้นเมื่อหลายปีก่อน ผมเคยเสียเวลานานเกินไปกับการพยายามทำให้เครื่องผมรันไฟล์ .exe ผ่าน wine หรือ mono เป็นแบบฝึกที่สนุก แต่ไม่คุ้มค่าเลย
  • คลิกพื้นที่ที่เขียนว่า 'type here for keyboard controls' ก็พอ
    ถ้าจะเริ่ม ให้กด z หลายครั้ง, เคลื่อนที่ด้วย w/a/s/d, ใช้งานด้วย e, ยิงด้วย space, z คือ enter
  • ใน 4 โพสต์บนสุดของหน้าแรก HN มีทั้ง Doom และ Bad Apple อยู่ด้วยกัน สัปดาห์นี้เริ่มได้ดี
  • เจ๋งมาก! ต่อไปคือ PDF reader ที่รันอยู่ใน Doom
    • อันนั้นออกจะโกงนิดหน่อย เพราะ PDF reader มีช่องโหว่ remote code execution เยอะมาก จนสุดท้ายมันคงหน้าตาเหมือน /XObject <> /Invoke RCE
    • เป็นโครงสร้างที่ PDF reader กับ Doom ต่อกันไปไม่รู้จบ
  • PDF รองรับ DEFLATE compression ดังนั้นน่าจะลดขนาดเอกสาร PDF ได้พอสมควร
    • ใช่ น่าจะดีสำหรับส่ง PDF ผ่านเครือข่ายให้เร็วขึ้นและเก็บไฟล์ที่เล็กลงใน cache
      จะทำให้เล็กเท่าไฟล์ DOOM1.WAD ได้ไหม? มัน 4MB
  • อันนี้ค่อนข้างเรียบร้อยดี และผมคิดว่าสร้างสรรค์ เพราะดูเหมือนเอาไปใช้จริงได้ เช่น โชว์ ผลงานด้านวิศวกรรม ได้โดยตรงในเรซูเม่ตอนสมัครงาน
    แต่เทคโนโลยีแบบนี้มีประโยชน์อย่างอื่นอีกไหม? เช่น สามารถแจกจ่ายแอปผ่าน PDF บนอุปกรณ์ที่มีข้อจำกัดสูงอย่าง iPhone หรืออุปกรณ์ที่ถูกจัดการอย่าง PlayStation, Xbox, kiosk ได้ไหม? ตอนลองเล่น Adobe Reader ดู เหมือนจะใส่หนังไว้ใน PDF ได้ด้วย และปรับแต่ง menu bar ได้ด้วย ดูเหมือนเป็นฟอร์แมตที่ยืดหยุ่นกว่าที่คิดพอสมควร