Sabemos que pode rodar até em escovas de dente elétricas, mas e quanto a rodar DOOM em um Arquivo PDF? A resposta é sim, apesar de ser uma versão bem pixelada.
Isso é possível porque o código C pode ser compilado para rodar dentro de um PDF usando uma versão antiga do Emscripten que direciona para asm.js em vez de WebAssembly.
Como o código C pode ser compilado para rodar em um arquivo PDF, o próximo passo foi descobrir como obter entradas de teclado e um framebuffer para a saída.
O usuário do Github, Ading2210, utilizou o mecanismo PDF do Chromium para resolver esse problema, pois ele suporta campos de texto e botões. No entanto, conseguir um framebuffer de boa qualidade e rápido o suficiente para jogar foi um desafio. Tem alguns minutos livres?
“A especificação completa do JS em PDFs foi implementada apenas pelo Adobe Acrobat e inclui algumas funcionalidades absurdas como renderização 3D, requisições HTTP e detecção de todos os monitores conectados ao sistema do usuário. No entanto, no Chromium e em outros navegadores, apenas uma pequena parte dessa API foi implementada por questões de segurança. Com isso, podemos fazer qualquer computação que quisermos, apenas com um IO muito limitado,” disse o desenvolvedor.
Veja mais sobre games!