finds.dev← search

// the find

oakmound/oak

★ 1,661 · Go · Apache-2.0 · updated Mar 2026

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.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →