Ebitengine

Simple 2D game engine for Go — the de-facto standard for 2D game development in Go. Ebitengine (formerly Ebiten) provides a simple, immediate-mode graphics API: implement the Game interface with Update() and Draw() methods, and Ebitengine handles the game loop, input, audio, and rendering. Targets Windows, macOS, Linux, iOS, Android, and WebAssembly (browser) from a single codebase. Uses OpenGL/Metal/DirectX/WebGL for rendering. Known for its simplicity and retro-game aesthetic (pixel art, chiptune). Used by the Go community for game jams and indie games.

Evaluated Mar 07, 2026 (0d ago) v2.x
Homepage ↗ Repo ↗ Developer Tools go game-engine 2d graphics cross-platform wasm mobile opengl retro
⚙ Agent Friendliness
68
/ 100
Can an agent use this?
🔒 Security
93
/ 100
Is it safe for agents?
⚡ Reliability
84
/ 100
Does it work consistently?

Score Breakdown

⚙ Agent Friendliness

MCP Quality
--
Documentation
85
Error Messages
82
Auth Simplicity
100
Rate Limits
100

🔒 Security

TLS Enforcement
98
Auth Strength
95
Scope Granularity
92
Dep. Hygiene
88
Secret Handling
92

Game engine — no network exposure from engine itself. WASM builds run in browser sandbox. Online features are application responsibility. No credentials needed for local development.

⚡ Reliability

Uptime/SLA
85
Version Stability
85
Breaking Changes
80
Error Recovery
88
AF Security Reliability

Best When

You're a Go developer building 2D games, game jams, or graphical simulations and want a simple, code-first engine with cross-platform compilation including WebAssembly.

Avoid When

You need 3D graphics, a visual editor, complex physics, or AAA game features. Ebitengine is intentionally simple — its strength is its constraint.

Use Cases

  • Build 2D game visualizations for agent simulations — game-loop architecture makes Ebitengine natural for visualizing agent environments, pathfinding, or reinforcement learning in Go
  • Create interactive data visualizations and dashboards using Ebitengine's immediate-mode rendering — pixel-level control for custom agent monitoring displays
  • Develop cross-platform Go tools with graphical display requirements — visualize agent decision trees, network graphs, or state machines with Ebitengine's canvas API
  • Build browser-based Go applications compiled to WebAssembly using Ebitengine's WASM target — agent demo tools that run in browser without server
  • Prototype 2D game concepts in Go for game jam development — Ebitengine's simplicity enables rapid 2D game prototyping with the full Go ecosystem available

Not For

  • 3D game development — Ebitengine is 2D only; use Godot (GDScript/C#), Unity (C#), or go3d for 3D games
  • Production-grade game engines requiring visual editors — Ebitengine has no visual editor, prefab system, or asset pipeline; it's code-only; use Godot for editor-based game development
  • High-performance AAA game development — Ebitengine is for 2D indie games and simple visualizations; not optimized for complex physics, large-world rendering, or AAA visual effects

Interface

REST API
No
GraphQL
No
gRPC
No
MCP Server
No
SDK
Yes
Webhooks
No

Authentication

Methods: none
OAuth: No Scopes: No

Game engine — no auth concepts. Online features (leaderboards, etc.) handled by application code.

Pricing

Model: open_source
Free tier: Yes
Requires CC: No

Ebitengine is Apache 2.0 licensed, maintained by Hajime Hoshi. Free for all use including commercial games.

Agent Metadata

Pagination
none
Idempotent
Full
Retry Guidance
Not documented

Known Gotchas

  • Game loop runs at 60 TPS by default — Update() called 60 times/second independent of Draw(); physics and game logic in Update(); rendering-only code in Draw(); mixing logic in Draw() causes incorrect simulation speed
  • Image sizes must be power-of-2 for some operations — Ebitengine's GPU textures work with any size but filtering and subimage operations perform best with power-of-2 dimensions; atlas textures recommended for sprites
  • Mobile builds require gomobile — `GOOS=android go build` doesn't work; use gomobile bind for Android AAR and gomobile build for iOS; gomobile setup is separate from standard Go toolchain
  • WASM builds need wasm_exec.js — browser deployment requires Go's wasm_exec.js (version must match Go compiler version) in HTML; stale wasm_exec.js from older Go causes silent runtime failures
  • Ebitengine's Draw() is immediate-mode — no retained scene graph; every frame redraws everything to screen.DrawImage(); stateful rendering requires storing image state in game struct and redrawing each frame
  • Audio latency on browsers — Web Audio API introduces latency compared to desktop audio; audio cues may feel delayed in browser builds; tune audio timing for WASM target separately from desktop

Alternatives

Full Evaluation Report

Comprehensive deep-dive: security analysis, reliability audit, agent experience review, cost modeling, competitive positioning, and improvement roadmap for Ebitengine.

AI-powered analysis · PDF + markdown · Delivered within 30 minutes

$99

Package Brief

Quick verdict, integration guide, cost projections, gotchas with workarounds, and alternatives comparison.

Delivered within 10 minutes

$3

Score Monitoring

Get alerted when this package's AF, security, or reliability scores change significantly. Stay ahead of regressions.

Continuous monitoring

$3/mo

Scores are editorial opinions as of 2026-03-07.

6157
Packages Evaluated
26150
Need Evaluation
173
Need Re-evaluation
Community Powered