2 pontos por GN⁺ 2025-01-14 | 1 comentários | Compartilhar no WhatsApp
  • DoomPDF é uma implementação criada para rodar Doom (1993) dentro de um PDF, com a tela do jogo e as instruções de controle incluídas no documento PDF
  • Os controles são centrados no movimento com WASD, com q correspondendo a esc, z a enter, e a use e space a fire
  • Com shift+WASD é possível correr, usar m para map e 1-7 para seleção de armas
  • Em uma página separada, é possível enviar custom WAD files, e o código-fonte está disponível em um repositório no GitHub
  • O ambiente de execução é limitado a navegadores baseados em Chromium, então é difícil esperar que funcione em outros visualizadores de PDF

Doom rodando dentro de um PDF

  • DoomPDF é uma versão executável de Doom (1993) fornecida no formato de documento PDF
  • O documento inclui instruções de controle por teclado e indicadores de entrada direcional
  • O ambiente de execução é limitado a navegadores baseados em Chromium

Teclas de controle e arquivos de extensão

  • Controles básicos
    • WASD: movimento
    • q: esc
    • z: enter
    • e: use
    • space: fire
  • Controles adicionais
    • shift+WASD: sprint
    • m: map
    • 1-7: weapons
  • upload de custom WAD files: é possível enviar arquivos WAD em uma página separada
  • Source code: repositório do código-fonte do DoomPDF

1 comentários

 
GN⁺ 2025-01-14
Comentários do Hacker News
  • Sou a pessoa que fez o "PDF Tetris". Excelente trabalho! Tive a mesma ideia na mesma época, e também tenho a minha versão de PDF Doom
    Fonte: https://github.com/thomasRinsma/pdfdoom
    Jogável: https://th0mas.nl/downloads/doom.pdf
    Ainda assim, esta implementação é mais limpa em vários aspectos
    • Aparece "Há um problema com este documento", mas não sei se o problema sou eu ou o documento
  • runtime JS limitado do mecanismo de PDF
    A humanidade foi longe demais

    • Falando sério, existe outro formato que satisfaça os seguintes requisitos? Um formato que permita compartilhar facilmente e de graça, por e-mail ou drive na nuvem, ativos, imagens e fontes; que consiga guardar entradas de formulário e salvamentos diretamente dentro do arquivo, sem envio por HTTP; no qual o usuário final possa verificar com facilidade e segurança assinaturas criptográficas incluídas no documento; e que também tenha fidelidade perfeita na impressão
      Na UE isso é especialmente importante, porque assinatura eletrônica não é do tipo DocuSign, "juro que sou John Smith", mas sim baseada em criptografia. As pessoas continuam reclamando do PDF, mas, na prática, não existe um formato substituto. Lugares como W3C / WHATWG poderiam criar algo baseado em tecnologias web, mas isso ainda não apareceu, e o EPUB só resolve o caso estreito de distribuição de e-books, não o uso "corporativo"
    • Não entendo muito bem por que dizem isso. Scripting embutido é útil para vários usos, como validação de formulários, e qualquer sistema de validação suficientemente complexo acaba virando Turing-completo
      Nesse caso, em vez de criar uma linguagem dedicada, é melhor ir de JavaScript; e, se você tem JavaScript, entradas e uma forma de atualizar uma grade de pixels gráficos, já chega ao nível de conseguir rodar Doom. Acho mais incrível do que terrível que computação e programabilidade tenham ficado tão baratas a ponto de entrarem amplamente até nos apps mais comuns
    • É a única forma de seguirmos em frente
  • A caixa de Pandora foi aberta
    O próximo passo é colocar o JSLinux do Bellard (https://bellard.org/jslinux/) para enfiar dentro de um PDF um sistema operacional completo, com ambiente de desenvolvimento e suíte de escritório
  • Portable Doom Format
    • Só é possível quando está dentro do Chrome
    • Como funciona em apenas um mecanismo de PDF, não é tão portable assim
  • Uma das experiências formativas que tive como calouro de CS foi abrir por engano um PDF no Emacs e ver que ele exibia o PDF renderizado de verdade, em vez de dados binários estranhos
    Fiquei me perguntando o que mais estaria acontecendo por trás sem eu saber. Infelizmente, não consegui rodar Doom no PDF dentro do Emacs. Acho que seria mais fácil reimplementar uma técnica parecida com a daqui usando recursos básicos do Emacs e caracteres ASCII, ou usar algo semelhante ao post do Bad Apple no vim[1], que estava em 1º quando este aqui estava em 2º
    [1]: https://news.ycombinator.com/item?id=42674116
    • Algumas semanas atrás, abri por engano um PDF no less e acabei descobrindo o pdftotext e vários softwares que, se configurados direito, o pager pode usar para exibir documentos arbitrários
      Isso me lembrou do processo pelo qual as distribuições Linux modernas decidem como executar arquivos. Depois que descobri isso alguns anos atrás, passei tempo demais tentando fazer com que arquivos .exe rodassem na minha máquina via wine ou mono. Foi um exercício divertido, mas não valeu a pena
  • É só clicar na área onde está escrito 'type here for keyboard controls'
    Para começar, aperte z várias vezes; movimento em w/a/s/d, usar em e, atirar em space, e z é enter
  • Na primeira página do HN, entre os 4 posts do topo, há tanto Doom quanto Bad Apple. A semana começou bem
  • Legal! O próximo é um leitor de PDF rodando dentro do Doom
    • Isso é meio trapaça. Leitores de PDF têm tantas vulnerabilidades de execução remota de código que acabaria parecendo algo como /XObject <> /Invoke RCE
    • Uma estrutura infinita de leitor de PDF e Doom
  • Como PDF suporta compressão DEFLATE, parece que daria para reduzir bastante o tamanho do documento PDF
    • Sim. Seria bom para enviar o PDF mais rápido pela rede e colocar arquivos menores no cache
      Será que dá para deixá-lo tão pequeno quanto o arquivo DOOM1.WAD? São 4 MB
  • Isto é bem elegante, e acho criativo porque parece ter usos práticos, como mostrar trabalhos de engenharia diretamente dentro do currículo ao procurar emprego
    Mas será que há outros usos para essa tecnologia? Por exemplo, seria possível distribuir apps em PDF em dispositivos muito restritos, como iPhone, ou em dispositivos gerenciados como PlayStation, Xbox e quiosques? Quando mexi no Adobe Reader, parecia que dava para colocar filmes dentro do PDF e até customizar a barra de menu. Parece um formato bem mais flexível do que eu imaginava