// the find
oakmound/oak
A pure Go game engine
Oak is a 2D game engine written in Go that avoids requiring a C compiler by default, making it unusual among Go game engines. It covers the basics — rendering, collision, audio, input, particles, scenes — with a handful of small finished games as proof of concept. It targets developers who want to ship a simple 2D game or GUI tool without leaving the Go toolchain.
The no-C-compiler-required default is a genuine differentiator: you can cross-compile and distribute without a CGo toolchain, which most Go game engines (including Ebiten) can't claim cleanly. The collision system uses an R-tree for spatial queries, so broad-phase detection scales reasonably instead of devolving into brute-force loops. Multi-window support is built in and actually demonstrated, not just listed — useful for tools and editors, not just games. Test coverage is real: nearly every package has _test.go files and CI runs them, which is more than most game engines bother with.
The 'pure Go' claim is already eroding — the README admits macOS requires Objective-C and hints at more C dependencies coming. If you're building a cross-compilation pipeline around that guarantee, you're on borrowed time. At 1661 stars and 86 forks after years of development, the community is thin: when you hit an obscure audio driver bug or a rendering edge case, you're mostly on your own. There's no tilemap/tileset support in the codebase, which is a painful gap for any tile-based 2D game — you'll be rolling your own from scratch. The physics package is just vectors and force accumulation; there's nothing resembling rigid bodies, joints, or constraints, so anything beyond arcade-style movement needs external work.