2 điểm bởi GN⁺ 2025-01-14 | 1 bình luận | Chia sẻ qua WhatsApp
  • DoomPDF là một bản triển khai cho phép chạy Doom (1993) bên trong PDF, với màn hình game và hướng dẫn điều khiển được tích hợp ngay trong tài liệu PDF
  • Điều khiển tập trung vào di chuyển bằng WASD; q tương ứng với esc, z là enter, e là use, và space là fire
  • Có thể dùng shift+WASD để sprint, m để mở map, và 1-7 để chọn vũ khí
  • Có thể tải lên custom WAD files trên một trang web riêng, và mã nguồn đã được công khai trên kho GitHub
  • Môi trường chạy bị giới hạn ở trình duyệt dựa trên Chromium, nên khó có thể mong đợi hoạt động trên các trình xem PDF khác

Doom chạy bên trong PDF

  • DoomPDF là bản chạy Doom (1993) được cung cấp dưới dạng tài liệu PDF
  • Bên trong tài liệu có kèm hướng dẫn điều khiển bằng bàn phím và hiển thị nhập hướng di chuyển
  • Môi trường hoạt động bị giới hạn ở trình duyệt dựa trên Chromium

Phím điều khiển và tệp mở rộng

  • Điều khiển cơ bản
    • WASD: di chuyển
    • q: esc
    • z: enter
    • e: use
    • space: fire
  • Điều khiển bổ sung
    • shift+WASD: sprint
    • m: map
    • 1-7: weapons
  • Tải lên custom WAD files: có thể tải tệp WAD lên tại trang riêng
  • Source code: kho mã nguồn của DoomPDF

1 bình luận

 
GN⁺ 2025-01-14
Các bình luận trên Hacker News
  • Tôi là người làm "PDF Tetris". Làm tuyệt vời! Tôi cũng nảy ra cùng ý tưởng vào cùng thời điểm và cũng có phiên bản PDF Doom của mình
    Mã nguồn: https://github.com/thomasRinsma/pdfdoom
    Chơi được tại: https://th0mas.nl/downloads/doom.pdf
    Dù vậy, bản triển khai này gọn gàng hơn ở nhiều điểm
    • Nó hiện "Tài liệu này có vấn đề", mà không biết vấn đề là tôi hay là tài liệu nữa
  • Runtime JS bị giới hạn của engine PDF
    Nhân loại đã đi quá xa rồi

    • Nói nghiêm túc thì có định dạng nào khác đáp ứng được các điều kiện sau không? Có thể chia sẻ miễn phí, dễ dàng qua email hoặc cloud drive cả tài sản, hình ảnh, font; có thể chứa trực tiếp dữ liệu nhập form và dữ liệu đã lưu ngay trong file mà không cần gửi HTTP; chữ ký mật mã học nhúng trong tài liệu có thể được người dùng cuối xác minh dễ dàng và an toàn; và độ trung thực khi in cũng hoàn hảo.
      Ở EU, điều này đặc biệt quan trọng vì chữ ký điện tử dựa trên mật mã học, chứ không phải kiểu DocuSign "tôi thề tôi là John Smith". Người ta cứ phàn nàn về PDF, nhưng thực sự không có định dạng nào thay thế được. Những nơi như W3C / WHATWG có thể tạo ra thứ gì đó dựa trên công nghệ web, nhưng vẫn chưa có, còn EPUB chỉ giải quyết phạm vi hẹp là phân phối sách điện tử chứ không giải quyết nhu cầu "công việc"
    • Tôi không hiểu lắm vì sao lại nói vậy. Scripting nhúng hữu ích cho nhiều mục đích như kiểm tra hợp lệ form, và một hệ thống kiểm tra đủ phức tạp cuối cùng sẽ trở nên Turing-complete
      Khi đó, thay vì tạo một ngôn ngữ chuyên dụng, dùng JavaScript sẽ hợp lý hơn; và nếu có JavaScript cùng input và cách cập nhật lưới pixel đồ họa, thì đã đủ ở mức có thể chạy Doom. Tôi thấy việc tính toán và khả năng lập trình đã trở nên quá rẻ nên được đưa rộng rãi vào cả những ứng dụng bình thường nhất là điều tuyệt vời hơn là đáng sợ
    • Đó là cách duy nhất để chúng ta tiến lên
  • Chiếc hộp Pandora đã được mở
    Bước tiếp theo là nhét JSLinux của Bellard (https://bellard.org/jslinux/) vào, để đưa cả một hệ điều hành hoàn chỉnh có môi trường phát triển và bộ ứng dụng văn phòng vào trong PDF
  • Portable Doom Format
    • Chỉ khả thi khi ở trong Chrome
    • Nó chỉ chạy trên đúng một engine PDF, nên cũng không portable lắm
  • Một trong những trải nghiệm định hình tôi hồi năm nhất CS là lần tôi vô tình mở PDF bằng Emacs và thấy nó hiển thị PDF đã render thật sự, chứ không phải dữ liệu nhị phân kỳ quặc
    Tôi bắt đầu tự hỏi sau lưng mình nó còn làm những gì nữa mà tôi không biết. Tiếc là không chạy được Doom trong PDF bên trong Emacs. Có lẽ sẽ dễ hơn nếu triển khai lại một kỹ thuật tương tự như ở đây bằng chức năng mặc định của Emacs và ký tự ASCII, hoặc dùng kỹ thuật giống bài Bad Apple trong vim[1], vốn đang đứng hạng 1 khi bài này đứng hạng 2
    [1]: https://news.ycombinator.com/item?id=42674116
    • Vài tuần trước tôi vô tình mở PDF bằng less rồi biết đến pdftotext và nhiều phần mềm có thể được pager dùng để hiển thị đủ loại tài liệu nếu cấu hình đúng
      Nó khiến tôi nhớ đến cách các bản phân phối Linux hiện đại quyết định cách thực thi file. Sau khi biết chuyện đó vài năm trước, tôi đã mất quá nhiều thời gian cố làm cho khi chạy file .exe trên máy mình thì nó được chạy bằng wine hoặc mono. Đó là một bài tập thú vị, nhưng không đáng công
  • Hãy bấm vào vùng có dòng 'type here for keyboard controls'
    Để bắt đầu, nhấn z vài lần; di chuyển bằng w/a/s/d, dùng bằng e, bắn bằng space, z là enter
  • Trong top 4 bài trên trang đầu HN có cả Doom lẫn Bad Apple. Tuần này khởi đầu tốt đấy
  • Tuyệt! Tiếp theo là trình đọc PDF chạy bên trong Doom
    • Cái đó hơi ăn gian. Trình đọc PDF có quá nhiều lỗ hổng thực thi mã từ xa đến mức cuối cùng chắc sẽ trông như /XObject <> /Invoke RCE
    • Một cấu trúc PDF reader và Doom nối tiếp nhau vô tận
  • PDF hỗ trợ nén DEFLATE, nên có vẻ có thể giảm kích thước tài liệu PDF khá nhiều
    • Đúng vậy. Sẽ tốt cho việc truyền PDF qua mạng nhanh hơn và đưa file nhỏ hơn vào cache
      Liệu có làm nhỏ được bằng file DOOM1.WAD không? Nó 4MB
  • Cái này khá gọn gàng, và tôi nghĩ nó sáng tạo vì có vẻ còn có ứng dụng thực tế, chẳng hạn như cho xem trực tiếp sản phẩm kỹ thuật ngay trong CV khi đi tìm việc
    Nhưng liệu công nghệ này còn có công dụng nào khác không? Ví dụ có thể phân phối app bằng PDF trên các thiết bị bị hạn chế nhiều như iPhone, hoặc các thiết bị được quản lý như PlayStation, Xbox, kiosk không? Khi nghịch Adobe Reader, tôi thấy có vẻ có thể nhúng cả phim vào PDF và tùy biến cả thanh menu. Có vẻ đây là một định dạng linh hoạt hơn mình tưởng khá nhiều