我在尝试 Devvit Web Custom Posts 的极限,结果变成了一个有趣的概念证明:一个直接在 Reddit 文章内运行的完整 Doom-compatible FPS。

技术栈:

  • Devvit Web
  • TypeScript
  • WebAssembly
  • Emscripten/SDL Doom-compatible runtime
  • Freedoom Phase 2
  • Devvit Redis 领先榜

一个有趣的问题是 IWAD 的大小。Freedoom Phase 2 大约是 28 MB,所以我建立了一个小的管道,将它分成块,单独加载它们,重构内存中的 WAD 并将其挂载到 Emscripten 虚拟文件系统中。

我还必须处理一些遗留的 SDL/Emscripten 假设,包括画布、键盘事件和 AudioContext。

现在它在桌面和移动设备上都能正常工作,有一个合适的加载流程,MAP01 完成后,引擎的完成事件会将持久的速度跑排行榜喂给它。

我非常希望从其他 Devvit 开发者那里得到反馈,特别是关于运行时架构和移动 UX。

可玩文章:https://www.reddit.com/r/playdoom/comments/1vklq2f/can_reddit_run_doom/