Cloudflare Chocolate Doom, Browser Games Now local-file player, 2026-10-20 Source: https://github.com/cloudflare/doom-wasm/tree/65e0d3ae2ffa604155eebd96ed40da6567bd08f4 Emscripten 3.1.57, autoconf 2.73 and automake 1.19. Repository: source emsdk_env.sh; python3 scripts/prepare-doom.py Verified downloads are reused from /tmp/bgn-doom. No WAD is fetched. Standalone: tar xzf doom-source.tar.gz; cd doom-wasm The source archive has engine.patch changes applied. Do not apply it twice. emconfigure autoreconf -fiv CFLAGS=-std=gnu11 ac_cv_exeext=.html emconfigure ./configure --host=wasm32-unknown-emscripten --without-libsamplerate --without-libpng --disable-doc --disable-fonts --disable-icons --disable-bash-completion emmake make -j8 Copy src/websockets-doom.js and .wasm beside the supplied index.html/boot.js/messages.js. The SDL source ZIPs can be placed in $EM_CACHE/ports for offline SDK builds. Wrapper preferred source is boot.js, messages.js and index.html. Serve over HTTP(S). Only local doom1.wad is accepted; its SHA-256 separates native save slots under /bgn-doom-v1/. The WAD stays in MEMFS and is not stored in IndexedDB. IDBFS is restored before main starts. G_DoSaveGame syncs after the native rename. Wait for the browser save confirmation; reselect the same WAD after refresh, then use Load Game. Native saves are origin/profile-specific. Acceptance scope: DOOM shareware E1M1, English, desktop keyboard, solo, SFX. Retail, DOOM II, PWAD mods, music, touch controls and multiplayer are unverified.