A pure Go DOOM engine that runs DOOM via WebAssembly with all game data embedded.
- All-in-one binary with embedded WADs, WASM engine and SoundFont
- Runs DOOM WASM module using wazero (no CGO)
- Graphics rendering with Ebitengine
- Sound effects and MIDI music via go-soundfont
- Cross-platform: Windows, macOS, Linux
go install github.com/danielgatis/go-doom@latestOr download pre-built binaries from the Releases page.
doom [game] [flags]| Game | Description |
|---|---|
doom1 |
Doom Shareware (default) |
doom |
Doom Registered |
doomu |
Ultimate Doom |
doom2 |
Doom II: Hell on Earth |
plutonia |
Final Doom: The Plutonia Experiment |
tnt |
Final Doom: TNT Evilution |
doom # Play Doom Shareware
doom doom2 # Play Doom II
doom -s 2 # Play with 2x scale
doom doom2 -s 3 # Play Doom II with 3x scale
doom -w ~/wads/mywad.wad # Play custom WAD file
doom -f ~/soundfonts/gm.sf2 # Use custom SoundFont| Flag | Description |
|---|---|
-w, --wad |
Path to custom WAD file |
-f, --soundfont |
Path to custom SoundFont file |
-s, --scale |
Window scale factor (default: 1) |
-v, --verbose |
Show DOOM log output |
-V, --version |
Show version |
-h, --help |
Show help |
| Key | Action |
|---|---|
| Arrow keys | Move |
| Ctrl / Z | Fire |
| Space / X | Use (open doors, activate) |
| Shift | Run |
| Alt | Strafe |
| 1-7 | Select weapon |
| Escape | Menu |
| Enter | Confirm |
| Tab | Automap |
| +/- | Zoom automap |
| F1 | Help |
| F2 | Save game |
| F3 | Load game |
| F4 | Sound volume |
| F5 | Detail level |
| F6 | Quicksave |
| F9 | Quickload |
| F10 | Quit |
| F11 | Gamma correction |
| Pause | Pause game |
git clone https://github.com/danielgatis/go-doom.git
cd go-doom
# Build all game variants
make all
# Or build a specific game
make doom1 # Doom Shareware (18MB)
make doom2 # Doom II (28MB)
# Build default (doom1)
make build| Binary | Game | Size |
|---|---|---|
doom1 |
Doom Shareware | ~18MB |
doom |
Doom Registered | ~24MB |
doomu |
Ultimate Doom | ~26MB |
doom2 |
Doom II | ~28MB |
plutonia |
Plutonia Experiment | ~30MB |
tnt |
TNT Evilution | ~31MB |
Binaries are placed in the bin/ directory.
If you find this project useful, consider buying me a coffee!
MIT License - see LICENSE file.
Daniel Gatis