在PDF中运行《毁灭战士》:突破文档边界的技术实验
Doom PDF是一个将经典射击游戏《毁灭战士》(Doom)嵌入PDF文件的开源项目。通过巧妙利用PDF格式的隐藏特性,这项实验成功打破了”PDF只能展示静态内容”的固有认知,让用户可以直接在浏览器中打开doom.pdf
文件,体验一场跨维度的游戏狂欢。项目基于GNU GPL v2协议开源,灵感源自多个前卫的PDF交互实验。
技术突破:当PDF遇上游戏引擎
JavaScript的另类用法
PDF标准支持内嵌JavaScript脚本,尽管浏览器仅保留了极简API(如文本输入框),而Adobe Acrobat曾实现的完整API甚至包含3D渲染和HTTP请求等危险功能。作者基于Chromium浏览器的有限环境,通过旧版Emscripten将C语言编译为asm.js代码,实现了游戏核心逻辑的移植。
输入输出的极限挑战
-
- 输入层:利用PDF原生支持的按钮和文本字段捕获键盘操作。
- 显示层:独创性采用逐行渲染方案,将传统逐像素更新(需320×200=64,000次操作/帧)优化为每帧仅更新200行文本字段。通过ASCII字符模拟6级灰度,在性能与画质间取得平衡,实测单帧渲染耗时约80ms。
这项实验不仅证明了PDF作为”沙盒容器”的潜力,更引发了关于文档安全边界与创意开发的深度讨论。尽管性能尚不完美(帧率约12FPS),但其突破性的技术路线为文件格式的另类应用开辟了新思路。
源代码:https://github.com/ading2210/doompdf
Demo:https://doompdf.dev/
发表回复