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.
- Targets
- Game
- Category
- Independent reconstruction cases
- Relationship
- Independent reconstruction project
- Sources reviewed
Requirements & limits
- Prerequisites: 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.
- Prerequisites: 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.
- Scope: 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.
- Testing evidence: 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.
- License: 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.
About this entry
The description was reviewed against primary sources.
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
More in Games
- Dusklight: a native Twilight Princess port built on the decompilation · Case study
- Ghostship: a libultraship native port of Super Mario 64 · Case study
- GoldenEye 007: an agent-assisted native port from a decompilation · Case study
- ico-pc: a native ICO port compiled from the PS2 decompilation · Case study
- Kingdom Hearts 358/2 Days: native PC port built on a matching decompilation · Case study
- LEGO Island, portable: a multi-platform port of the decompiled source · Case study