~/talk

How I Ported Doom to the Browser with WebAssembly

Talkat Fork it! Tunis 2025 · on Saturday, 2025-04-05· [webassembly, game-development]
slides:none on file

Ports Doom to the browser by compiling a C# engine to WebAssembly and replacing the nonbrowser parts of managed-doom with a custom SFML replacement. Game logic stays in C# and produces a column‑ordered framebuffer and raw audio buffer that JavaScript draws to Canvas and plays via AudioContext and Canvas using requestAnimationFrame for the loop. Samples are normalized, WADs load in the browser, it hits playable 30–60 fps even on phones, and the prototype takes about one to two weeks of personal work.

AI-written summary · about

  1. 0:00Introduction and motivation
  2. 2:11What is WebAssembly
  3. 4:40WebAssembly in .NET
  4. 9:16Game porting explained
  5. 12:28Choosing Doom for porting
  6. 13:33Porting strategy and steps
  7. 18:30Game loop and rendering
  8. 20:21JavaScript and C# interaction
  9. 21:24Audio implementation
  10. 23:07Frame rendering with canvas
  11. 26:04Live demo of Doom
  12. 27:35Key takeaways and conclusion
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.