finds.dev← search

// the find

hajimehoshi/ebiten

★ 13,325 · Go · Apache-2.0 · updated Jul 2026

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.

View on GitHub → Homepage ↗

// 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 →