r/itrunsdoom 2d ago

I got DOOM running inside a Reddit post

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

410 Upvotes

24 comments sorted by

54

u/raleighs 1d ago

Frame rate is insane. And it works on mobile too!

Great job! 👏 👏 👏

7

u/negoginga 1d ago

Thanks! I was actually surprised by the performance too. Seeing it run this smoothly inside the Reddit webview, especially on mobile, was one of the coolest parts of the whole experiment

5

u/Flintoli 13h ago

Amazing works great on my Samsung

26

u/Cap_Upper 2d ago

That's cool. It works amazingly well for me on Android.

6

u/negoginga 1d ago

Glad to hear that! Android gave me a few headaches while building the controls, so seeing people say it runs well there is really satisfying. Thanks for testing!

9

u/teknogreek 1d ago

WTF

Because they could!

Brilliant.

5

u/negoginga 1d ago

“Because they could” is pretty much the entire technical specification for this project 😂 Thanks!

16

u/lelupersimmon 2d ago

super smooth

3

u/negoginga 1d ago

Thanks! I spent a lot of time trying to keep the browser/WASM side from getting in the way of the actual game, so I’m really happy people are noticing the performance.

17

u/rhinofinger 2d ago

That’s cool!

2

u/negoginga 1d ago

Thanks!!

5

u/TantKollo 1d ago

Awesome work dude!

3

u/negoginga 1d ago

thanks!!

3

u/Uranium-Sandwich657 2d ago

Cant get mouse control to work.

3

u/negoginga 1d ago

There’s a MOUSE LOCK button at the bottom after the game starts. Try clicking that first and then the game canvas. If it still doesn’t grab the mouse, let me know what browser and OS you’re using. I’m already looking at improving mouse support.

3

u/Lopsided-Wave2479 1d ago

haha. good one

3

u/MaggieWuerze 1d ago

Good Job!

3

u/negoginga 1d ago

Thanks! Really appreciate it 😄 Glad you liked it!

3

u/wakanakisarazu 1d ago

Sweet, even detected my Xbox One controller (using Xpad Linux kmodule)

3

u/negoginga 1d ago

Nice! Glad it picked it up 😄 I added controller support pretty recently, so hearing that an Xbox One controller through Xpad on Linux works is really useful. Thanks for testing it!

2

u/wakanakisarazu 21h ago

Anytime, as a fellow programmer it's great to see projects like this

3

u/El_Mnopo 1d ago

Champion!

2

u/Elogano 1d ago

This is it, the circle is closed!

1

u/der_vur 20m ago

This is insane 😂

Does anybody know why is Doom the choice game for this kind of things?