Show HN: Doom port to pure Go โ€“ Gore

https://news.ycombinator.com/rss Hits: 6
Summary

๐Ÿ”ฅ GORE ๐Ÿ”ฅ A Minimal Go Port of doomgeneric โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•”โ•โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•”โ•โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ–ˆโ–ˆโ–ˆโ–ˆโ•”โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘โ•šโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•‘ โ•šโ•โ• โ–ˆโ–ˆโ•‘ โ•šโ•โ•โ•โ•โ•โ• โ•šโ•โ•โ•โ•โ•โ• โ•šโ•โ•โ•โ•โ•โ• โ•šโ•โ• โ•šโ•โ• .GO TLDR Tired of reading already? wget https://distro.ibiblio.org/slitaz/sources/packages/d/doom1.wad go run github.com/AndreRenaud/gore/example/termdoom@latest ๐Ÿ’€ WHAT FRESH HELL IS THIS? This is a minimal, platform-agnostic Go port of the legendary DOOM engine, transpiled from the doomgeneric codebase. No CGo. No platform dependencies. Just pure, unadulterated demon-slaying action powered by the glory of Go's cross-compilation. The original C code was converted to Go using (modernc.org/ccgo/v4), by cznic (https://gitlab.com/cznic/doomgeneric.git). This was then manually cleaned up to remove a lot of manual pointer manipulation, and make things more Go-ish, whilst still maintaining compatibility with the original Doom, and its overall structure. ๐Ÿ”ซ FEATURES โœ… Platform Agnostic : Runs anywhere Go runs : Runs anywhere Go runs โœ… Minimal Dependencies : Only requires Go standard library : Only requires Go standard library โœ… Multiple DOOM Versions : Supports DOOM, DOOM II, Ultimate DOOM, Final DOOM : Supports DOOM, DOOM II, Ultimate DOOM, Final DOOM โœ… WAD File Support : Bring your own demons via WAD files : Bring your own demons via WAD files โœ… Memory Safe : Go's GC protects you from buffer overflows (but not from Cacodemons) (WIP - 95% complete) : Go's GC protects you from buffer overflows (but not from Cacodemons) (WIP - 95% complete) โœ… Cross Compilation: Build for any target from any platform Missing Features One instance per process: Still has a lot of the original global variables, which prevent multiple instances from running Random exported consts: The original C code used the standard convention of all upper case for const/enum values. This results in the Go code assuming these are exported values, when really they're ...

First seen: 2025-08-13 06:56

Last seen: 2025-08-13 11:58