EBITEN

A dead simple 2D game library in Go

Stable Version
{{.StableVersion}}
{{if .RCVersion}}
Release Candidate Version
{{.RCVersion}}
{{end}}
Development Version
{{.DevVersion}}

Featured Projects

Bear's Restaurant
Bluebird of Happiness
Clock of Atonement
Inovation 2007

Find more nice works with Ebiten!

Game Examples

{{range .GamesExamples -}}
Ebiten example: {{.Name}}
{{- end}}

Platforms

Desktops
Windows, macOS, Linux, FreeBSD
Mobiles
Android, iOS
Web browsers
Chrome, Firefox, Safari and Edge (GopherJS and WebAssembly (Experimental))

Note: Gamepads and keyboard are not available on Android/iOS.

Features

2D Graphics
Geometry/Color matrix transformation, Various composition modes, Offscreen rendering, Fullscreen, Text rendering, Automatic batches, Automatic texture atlas
Input
Mouse, Keyboard, Gamepads, Touches
Audio
Ogg/Vorbis, MP3, WAV, PCM

Examples

Graphics

{{range .GraphicsExamples -}}
Ebiten example: {{.Name}}
{{- end}}

Input

{{range .InputExamples -}}
Ebiten example: {{.Name}}
{{- end}}

Audio

{{range .AudioExamples -}}
Ebiten example: {{.Name}}
{{- end}}

The Gopher photographs by Chris Nokleberg are licensed under the Creative Commons 3.0 Attributions License.

Execute the examples

go get github.com/hajimehoshi/ebiten/...
cd $GOPATH/src/github.com/hajimehoshi/ebiten/examples
go run -tags=example rotate/main.go

Note that you need to add -tags=example to run examples.

Getting Started

Let's build a simple "Hello world!" game to get started with Ebiten. First create a new directory (mkdir hello_world), and change into it (cd hello_world). Type the following code into the main.go file:

package main

import (
        "github.com/hajimehoshi/ebiten"
        "github.com/hajimehoshi/ebiten/ebitenutil"
)

func update(screen *ebiten.Image) error {
        ebitenutil.DebugPrint(screen, "Hello world!")
        return nil
}

func main() {
        ebiten.Run(update, 320, 240, 2, "Hello world!")
}

Run the go run command to start the game. There you have it, your first Ebiten game!