Build a 2D game in Go that runs on desktop, mobile, and web browsers without rewriting code for each platform.
Handle keyboard, mouse, gamepad, and touch input in a cross-platform game using a single consistent API.
Play music and sound effects from Ogg, MP3, or WAV files inside a Go game.
Write custom pixel shaders for visual effects in a Go game without switching to a heavier engine.
| hajimehoshi/ebiten | coder/coder | gopherjs/gopherjs | |
|---|---|---|---|
| Stars | 13,166 | 13,188 | 13,143 |
| Language | Go | Go | Go |
| Setup difficulty | easy | hard | moderate |
| Complexity | 3/5 | 4/5 | 3/5 |
| Audience | developer | ops devops | developer |
Figures from each repo's GitHub metadata at analysis time.
Pure Go, no Cgo required, so setup is a standard `go get` with no C toolchain needed.
Ebitengine (also known as Ebiten) is an open-source 2D game engine written in the Go programming language. It is designed for developers who want to build 2D games without dealing with a complex setup. The project describes its API as dead simple, meaning it prioritizes a small and approachable interface over a large feature set. Games built with Ebitengine can run on a wide range of platforms from one codebase: Windows, macOS, Linux, FreeBSD, Android, iOS, the web via WebAssembly, and Nintendo Switch. Xbox support is listed as limited and not yet broadly available. One practical note for Windows and macOS users is that Ebitengine does not require Cgo, which is a tool that lets Go code call C code. Avoiding it makes builds simpler and more portable. The engine covers the three main areas a 2D game typically needs. For graphics, it supports drawing shapes and images with geometry and color transformations, blending modes, off-screen rendering (drawing to an invisible buffer before putting it on screen), text rendering, and custom shaders. For input, it handles mouse, keyboard, gamepad, and touch events. For audio, it can play Ogg/Vorbis, MP3, WAV, and raw PCM files. The repository includes a set of sub-packages for specific tasks, such as handling audio formats, working with color transforms, and managing input state changes. There is also a mobile package for Android and iOS builds. The project has an active community across Discord, Slack, GitHub Discussions, and Reddit. The engine code is released under the Apache 2.0 license. The bulk of the README is license text for the third-party libraries Ebitengine depends on, such as GLFW and parts of the Go standard library.
Simple open-source 2D game engine for Go that lets you build games running on Windows, macOS, Linux, Android, iOS, and the web from one codebase without complex setup.
Mainly Go. The stack also includes Go, WebAssembly, GLFW.
Apache 2.0 license, use freely in personal or commercial projects, just keep the copyright and license notice.
Setup difficulty is rated easy, with roughly 30min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.