Running DOOM from Go usually means binding the C engine through cgo (Chocolate
Doom, GZDoom, the upstream id Software source release). go-doom takes the
pure-Go path instead: a hand-port lineage from the
id Software 1997 source release through
AndreRenaud/gore, with a
backend/tamago/ layer that drives the framebuffer through
go-virtio's GPU + audio through its virtio-snd
channel + input through virtio-input. No SDL, no GL, no OpenAL, no libc.
Built for bare-metal, validated by the 4-gate provable-test protocol.
Every release runs a canonical demo through the cmd/harvest-reference oracle and
compares the result on 4 axes: engine determinism (BYTE-EQUAL frames at checkpoint tics),
guest-GPU fidelity (χ² ≤ tolerance), audio events (BYTE-EQUAL CacheSound /
PlaySound log), and audio waveform (per-second RMS envelope bounded). The same protocol is
carried forward into go-quake1, the Q1 sibling.
Repositories
doom + seed · backend/tamago · embedwad · harvest-reference · examples
The DOOM engine in pure Go. Hand-port lineage: id Software 1997 source release -> AndreRenaud/gore -> go-doom/engine, with a bare-metal TamaGo backend + shareware DOOM1.WAD in-tree. CGO_ENABLED=0 on the engine path, 4-gate provable-test protocol, 6-arch CI, BSD-3 wrapper + GPL-2 engine carve-out.
Logos, favicons, social previews
Brand assets — SVG / PNG / JPG / ICO / ICNS in color, white-transparent and black-transparent variants. Drives this landing, the engine README banner, and the org avatar.
The engine + TamaGo backend run with CGO_ENABLED=0 on all
six 64-bit Go targets (host-side demos under example/ are allowed cgo for SDL /
Ebitengine integration). Shareware DOOM1.WAD ships in-tree under id Software's
freely-redistributable grant so CI gates are reproducible. BSD-3 wrapper + GPL-2 engine
carve-out throughout.
Family
go-doom — DOOM (1993) · this project ·
go-quake1 — id Tech 1 (1996) · active ·
go-quake2 · go-quake3 — reserved