// the find
hajimehoshi/ebiten
A dead simple 2D game engine for Go
Ebitengine is a 2D game engine for Go built around a dead-simple game loop: implement Update() and Draw(), call ebiten.RunGame(), ship. It targets desktop, mobile, and WebAssembly from one codebase. The audience is Go developers who want to make games without picking up a second language or a heavyweight engine.
Automatic texture atlasing and draw-call batching happen transparently — you don't have to think about it for typical 2D workloads. The custom shader support (Kage language, GLSL-like) gives you real GPU control without leaving Go. WebAssembly target is a first-class citizen, not an afterthought, and the example set is unusually large and runnable. The `.agents/skills` directory for AI coding agents is a practical addition that other projects haven't thought to do yet.
No built-in scene graph, ECS, or UI toolkit — you're writing all of that yourself or pulling in third-party libraries, which means every non-trivial project grows its own bespoke architecture. Mobile (Android/iOS) and console targets require Cgo, which breaks the pure-Go cross-compilation story and adds friction to CI. The Kage shader language is a subset of Go syntax mapped to GLSL, which sounds clever but means you're debugging a pseudo-language with Go tooling that doesn't actually understand it. Physics is entirely absent; you'll pull in something like resolv or cp and then figure out how to wire it into the update loop yourself.