Case study
DiabloWeb: a WebAssembly browser port built on Devilution
Runs Diablo in web browsers by compiling a stripped-down fork of Devilution, the community reconstruction of the game’s original source, to WebAssembly behind a React front end. The fork removes the Storm, DiabloUI, DirectX and Windows dependencies and reworks event handling for the browser. It is a port built on a reconstruction and reports no matching or behavior-equivalence checks of its own.
Requirements and limitations
- Reviewed diabloweb 1.0.39 at its last commit (May 2022). Prebuilt WebAssembly modules for the retail and shareware builds, and an MPQ compressor, are committed; their C/C++ source is the separate d07RiV/devilution fork. That fork’s README says many parts of the code were modified, correct behavior is not guaranteed and network play was broken; diabloweb carries WebSocket and WebRTC client modules, but multiplayer status is not established here.
- The full game needs the user’s own DIABDAT.MPQ from an original copy (the page points to the GOG release); the shareware SPAWN.MPQ runs the free demo. Data files are selected or dropped in the browser, saves are kept in IndexedDB and can be downloaded or uploaded as .sv files, and the app can optionally compress the MPQ locally. Neither repository includes retail game data.
- The front end is a webpack/React project built with Node.js. Rebuilding the WebAssembly modules requires Emscripten and the fork’s node build.js; the fork can also build a Windows app in Visual Studio 2017. README says the hosted page serves the shareware SPAWN.MPQ; local runs need it placed in the public folder.
- Neither README reports tests, matching results or comparisons with the original executable, and the reviewed front-end tree has no test files. Reported playability rests on the hosted deployment; this collection ran nothing.
- diabloweb has no license file. The fork ships Unlicense text, yet its README limits the source to non-commercial use; current upstream Devilution uses the Sustainable Use License 1.0, and Blizzard retains its rights in Diablo and its data. The reviewed sources establish no AI or REA attribution.
About this entry
- Type
- Case study
- Category
- Independent reconstruction cases
- Relationship
- Independent reconstruction project
- Targets
- Game
Sources reviewed
The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.
Primary sources
- README.md GitHub · d07RiV/diabloweb · Revision c61ef19
- package.json GitHub · d07RiV/diabloweb · Revision c61ef19
- src/App.js GitHub · d07RiV/diabloweb · Revision c61ef19
- src/fs.js GitHub · d07RiV/diabloweb · Revision c61ef19
- README.md GitHub · d07RiV/devilution · Revision 798b512
- LICENSE GitHub · d07RiV/devilution · Revision 798b512
- build.js GitHub · d07RiV/devilution · Revision 798b512
- README.md GitHub · diasurgical/devilution · Revision 9f01757
- LICENSE.md GitHub · diasurgical/devilution · Revision 9f01757