Ebitengine (v2) is an open-source, Apache-2.0-licensed 2D game engine for the Go programming language, built for developers who want a simple API for writing 2D games that deploy across desktop, mobile, web and console platforms.
What it is
Ebitengine (v2), formerly known as Ebiten, is a 2D game engine for the Go programming language, published at github.com/hajimehoshi/ebiten/v2 under the Apache License version 2.0. The repository describes itself as "a dead simple 2D game engine for Go" and carries the topics go, golang, golang-library, gamedev, game, game-2d, game-development, game-engine, game-engine-2d and game-library, which places it firmly in the Go and game-development ecosystem. It has 13,501 stars, 791 forks and 296 open issues, and its most recent push was on 2026-09-23.
The concrete problem it solves is assembly work. A 2D game in Go needs a render loop with matrix transformations and composition modes, input handling across several device families, and decoded audio; Ebitengine supplies those concerns through one API and a set of packages, so a project does not have to combine a separate library for each concern. The module exposes ebiten alongside audio with the mp3, vorbis and wav subpackages, colorm, ebitenutil, inpututil, mobile, text/v2, vector, and the experimental exp/shaderprecomp, exp/textinput and exp/vmhost packages.
Key capabilities
- 2D graphics covering geometry and colour transformation by matrices, various composition modes, offscreen rendering and text rendering.
- Automatic batches and an automatic texture atlas, listed in the README alongside custom shaders as part of the graphics feature set.
- Custom shaders, with the exp/shaderprecomp package provided for shader precompilation.
- Input from mouse, keyboard, gamepads and touches, with the inpututil package available for input handling.
- Audio playback supporting Ogg/Vorbis, MP3, WAV and PCM, through the audio package and its audio/vorbis, audio/mp3 and audio/wav subpackages.
- Deployment targets of Windows, macOS, Linux, FreeBSD, Android, iOS, WebAssembly, Nintendo Switch and Xbox.
- Supporting packages for colour matrices (colorm), vector graphics (vector), text (text/v2), utilities (ebitenutil), mobile builds (mobile), and the experimental exp/textinput and exp/vmhost packages.
Who uses it and how
- Developers shipping 2D games on desktop, where installation is documented separately for Windows, macOS, Linux and FreeBSD.
- Mobile teams building for Android and iOS, both of which require Cgo and therefore shape how the build environment is set up.
- Web deployment through WebAssembly, documented on the project's WebAssembly page.
- Console work on Nintendo Switch and Xbox, both requiring Cgo; Xbox support is described as limited and not available to everyone, with negotiations under way to make it broadly accessible.
- Developers using AI coding agents, who are directed to the repository's skills directory, and community members who gather on Discord, in the #ebitengine channel in Gophers Slack, on GitHub Discussions and at r/ebitengine on Reddit.
Getting started
For desktops, the README points to the installation instruction at ebitengine.org/en/documents/install.html, and the engine is consumed as the Go module github.com/hajimehoshi/ebiten/v2, with a cheat sheet at ebitengine.org/en/documents/cheatsheet.html.
How it compares
The facts provided list no paid products that this project replaces, and they name no comparable game engines. Ebitengine therefore stands alone in this registry, with the only positioning available being the project's own description of itself as a dead simple 2D game engine for Go.
When to use it — and when not to
Ebitengine is a library rather than a hosted service, so there is no database, object storage or mail server to operate; the real operational burden lands on the build environment whenever Cgo is required, as it is for Android, iOS, Nintendo Switch and Xbox. Developers who need 3D rendering will not find it here, since the listed feature set is limited to 2D graphics, input and audio. The README is a short landing page that delegates detail to the website rather than documenting the API inline, and the repository carries 296 open issues, so a team should expect to read the external documentation and follow issues rather than rely on the README alone.