▲ 131 r/Doom

I made Freedoom playable directly inside Reddit

I’ve been working on this for the past few days and finally feel like it’s polished enough to share here.

PlayDOOM runs directly inside a Reddit post, and now includes the full 32-map Freedoom Phase 2 campaign.

It uses Freedoom’s free/libre assets, so the project doesn’t distribute the proprietary DOOM.WAD or DOOM2.WAD.

Current features:

  • MAP01 to MAP32
  • Campaign progression
  • Campaign + Weekly leaderboards
  • Speed leaderboard for every map
  • Keyboard, mobile dual-stick and controller support
  • Persistent scores tied to your Reddit account

You can play any map directly or work through the campaign.

Play it here:
https://www.reddit.com/r/playdoom/

Would love feedback from actual Doom players, especially on controls, later maps and anything that feels broken.

Apparently Reddit can run Freedoom.

u/negoginga — 8 days ago

I got DOOM running inside a Reddit post

https://preview.redd.it/7kwdw6rbwmih1.png?width=783&format=png&auto=webp&s=cbdf4bed6af7b23e2f25129455112da048d2883b

I wanted to see if Reddit itself could actually run DOOM, so I built a Devvit Web Custom Post that runs a DOOM-compatible engine directly inside Reddit.

This isn't a video or remote stream — the game runs client-side in the Reddit webview using WebAssembly/Emscripten + SDL, with Freedoom Phase 2 as the game data.

One of the fun problems was the WAD: it's roughly 30 MB, while Devvit Web has request/response constraints, so I split it into smaller chunks, load them separately, rebuild the WAD in memory and mount it into Emscripten's virtual filesystem before starting the engine.

I also added:

  • keyboard + mouse controls
  • mobile touch controls
  • Gamepad API support
  • browser audio handling
  • MAP01 completion detection
  • persistent speedrun leaderboard using Devvit Redis

You can play it here:

https://www.reddit.com/r/playdoom/?playtest=play-doom

reddit.com
u/negoginga — 10 days ago
▲ 68 r/brdev

Rodei DOOM em um post do Reddit

Esses dias comecei a mexer com Devvit e fui testar até onde dava pra levar um post interativo do Reddit.

Acabei fazendo o Freedoom rodar dentro do próprio post usando WebAssembly.

O engine é baseado em Emscripten/SDL e deu um pouco mais de trabalho do que parecia. O WAD tem quase 30 MB, então precisei quebrar ele em chunks menores, baixar as partes no browser, reconstruir tudo em memória e só depois montar no filesystem virtual do engine.

Também teve umas dores com input e áudio. No desktop ficou WASD/mouse, e no mobile fiz controles touch que simulam as teclas que o jogo espera.

Além disso coloquei um ranking de tempo do MAP01 usando o Redis do Devvit. Quando termina a fase, pego o evento do próprio engine e salvo o melhor tempo do usuário.

No fim ficou um Doom-like rodando dentro do Expanded Mode do Reddit, sem download e sem abrir site externo.

Pra quem quiser testar:

https://www.reddit.com/r/playdoom/

Se alguém aqui já mexeu com WASM/Emscripten e tiver alguma ideia de melhoria, aceito sugestões.

EDIT: tá funcionando com controle USB/Bluetooth

u/negoginga — 11 days ago

PlayDOOM. Doom-compatible FPS running directly inside a Reddit post [FPS]

A browser-playable Doom-compatible FPS built as an interactive Reddit post.

No install or download required just press PLAY and the game runs directly inside Reddit.

Features

Desktop + mobile controls
Freedoom Phase 2
MAP01 speedrun challenge
Persistent global leaderboard

Your best completion time is saved and ranked against other players.

reddit.com
u/negoginga — 11 days ago
▲ 4 r/Devvit

I got a Doom-compatible WASM FPS running inside a Devvit Web Custom Post

I've been experimenting with how far Devvit Web Custom Posts can go, and this turned into a pretty fun proof of concept: a complete Doom-compatible FPS running directly inside a Reddit post.

Stack:

  • Devvit Web
  • TypeScript
  • WebAssembly
  • Emscripten/SDL Doom-compatible runtime
  • Freedoom Phase 2
  • Devvit Redis for the leaderboard

One interesting problem was the IWAD size. Freedoom Phase 2 is around 28 MB, so I built a small pipeline that splits it into chunks, loads them individually, reconstructs the WAD in memory and mounts it into the Emscripten virtual filesystem.

I also had to deal with some legacy SDL/Emscripten assumptions around the canvas, keyboard events and AudioContext.

It now works on desktop and mobile, has a proper loading flow, and when MAP01 finishes the engine's completion event feeds a persistent speedrun leaderboard.

I'd love feedback from other Devvit developers, especially around the runtime architecture and mobile UX.

Playable post: https://www.reddit.com/r/playdoom/comments/1vklq2f/can_reddit_run_doom/

reddit.com
u/negoginga — 11 days ago

I got a Doom-compatible FPS running entirely inside a Reddit post! desktop, mobile and a global leaderboard

I wanted to see how far a Reddit Custom Post could be pushed, so I built a full Doom-compatible FPS that runs directly inside Reddit.

No download, no external launcher just open the post, press PLAY, and you're in.

It uses a WebAssembly Doom-compatible engine with Freedoom Phase 2, and I added:

  • desktop keyboard/mouse controls
  • mobile touch controls
  • sound
  • proper loading screen
  • MAP01 speedrun mode
  • persistent global leaderboard using Reddit/Devvit Redis

The goal is simple: finish MAP01 as fast as possible and beat the other Redditors.

I'd really like feedback on the mobile controls, loading experience and whether the leaderboard makes it replayable.

Playable post: https://www.reddit.com/r/playdoom/comments/1vklq2f/can_reddit_run_doom/

reddit.com
u/negoginga — 11 days ago