Ebitengine - A dead simple 2D game engine for Go
Go to file
Hajime Hoshi 237498e51f
ui: Add an optional function Draw function to Game interface (#1107)
This change adds an optional function Draw to the Game interface.
With Draw function, the game logic and rendering are separate.
There are some benefits:

  * The API is clearer and easier to understand.
  * When TPS < FPS, smoother rendering can be performed without
    changing the game logic depending on TPS.
  * Porting to XNA, which has separate functions Update and Draw,
    would be a little easier.

Draw is optional due to backward compatibility. Game interface was
already used before v1.11.x in mobile packages, and adding a
function would break existing code unfortunately. Then, we adopted
switching the behavior based on whether Draw is implemented or not
by type assertions.

IsDrawingSkipped will always return false when Draw is implemented.

Fixes #1104
2020-03-24 12:01:37 +09:00
.github Add FUNDING.yml 2019-12-07 19:00:46 +09:00
audio audio: Remove duplicate check for io.Seeker (#1051) 2020-01-10 19:37:31 +09:00
cmd/ebitenmobile cmd/ebitenmobile: Add newline to usage output (#1109) 2020-03-23 11:10:09 +09:00
docs docs: Remove unused contents 2019-03-22 03:23:48 +09:00
ebitenutil Fix missing js build tag (#1088) 2020-02-21 20:24:25 +09:00
examples ui: Add an optional function Draw function to Game interface (#1107) 2020-03-24 12:01:37 +09:00
inpututil inpututil: Package inpututil is no longer experimental 2018-05-14 01:32:55 +09:00
internal mobile/ebitenmobileview: Implement Android gamepad buttons 2020-03-23 01:30:17 +09:00
mobile mobile/ebitenmobileview: Implement Android gamepad buttons 2020-03-23 01:30:17 +09:00
text Add linebreak support to text.Draw (#1075) 2020-02-12 23:15:57 +09:00
vector vector: Add comments 2020-03-17 00:17:25 +09:00
.gitattributes Add .gitattributes for GitHub Linguist 2020-01-30 21:06:50 +09:00
.gitignore Add new example: squirals (#952) 2019-10-09 00:54:23 +09:00
.travis.yml Fix .travis.yml for external repositories 2020-03-23 12:34:06 +09:00
AUTHORS Add Steven Xie to AUTHORS 2020-03-23 11:10:53 +09:00
CODE_OF_CONDUCT.md Add CODE_OF_CONDUCT.md 2020-01-08 11:30:57 +09:00
colorm_test.go affine: Bug fix: ColorM.Apply was wrong when alpha is 0 2018-02-27 12:16:16 +09:00
colorm.go graphics: Marks ColorM as non-comparable explicitly 2019-10-31 01:55:59 +09:00
CONTRIBUTING.md docs: Update the links 2020-01-20 01:18:05 +09:00
copy_test.go graphics: Move functions to the package ebiten 2019-06-26 22:23:09 +09:00
copy.go graphics: Move functions to the package ebiten 2019-06-26 22:23:09 +09:00
cursormode.go ui: Rename files 2019-12-14 12:35:35 +09:00
debug_ebitendebug.go Add 'ebitendebug' build tag 2018-06-25 23:59:32 +09:00
debug_notebitendebug.go Add 'ebitendebug' build tag 2018-06-25 23:59:32 +09:00
doc.go ui: Add an optional function Draw function to Game interface (#1107) 2020-03-24 12:01:37 +09:00
export_test.go mipmap: Create mipmap package and bufferd.Image uses it 2020-01-08 02:06:01 +09:00
gamepad.go input: Move MouseButton and GamepadButton to driver package 2019-03-30 23:19:52 +09:00
generate.go Bug fix: some generators did not work due to a lacked package 2020-03-23 01:36:21 +09:00
genevents.go Fix misspellings 2019-10-12 01:10:53 +09:00
genkeys.go Bug fix: some generators did not work due to a lacked package 2020-03-23 01:36:21 +09:00
geom_test.go affine: Add TestGeoMEquals 2019-06-09 06:56:25 +09:00
geom.go graphics: Use float64 in GeoM 2020-03-16 00:38:33 +09:00
go.mod Update GLFW to v3.3.2 2020-02-23 03:10:38 +09:00
go.sum Update GLFW to v3.3.2 2020-02-23 03:10:38 +09:00
goversion.go Force to use Go 1.12 or later 2019-05-01 17:43:38 +09:00
graphics.go graphics: Move const definitions to driver package 2019-06-26 01:05:13 +09:00
image_test.go mipmap: Bug fix: DrawTriangles with a scale-only color matrix should be optimized 2020-03-17 02:48:29 +09:00
image.go graphics: Use float64 in GeoM 2020-03-16 00:38:33 +09:00
imagedumper_desktop.go ui: Add an optional function Draw function to Game interface (#1107) 2020-03-24 12:01:37 +09:00
imagedumper_notdesktop.go ui: Add an optional function Draw function to Game interface (#1107) 2020-03-24 12:01:37 +09:00
imageparts.go graphics: Experimental: (*image.Image).SubImage 2018-10-28 02:19:14 +09:00
init.go Refactoring: Add init.go 2020-02-11 11:14:19 +09:00
input.go input: Add comments about mobiles 2020-02-23 02:09:28 +09:00
keys.go input: Refactoring: Rename variables 2020-02-19 10:52:58 +09:00
LICENSE Adjust LICENSE file 2017-01-30 18:57:49 +09:00
mousebuttons.go input: Move MouseButton and GamepadButton to driver package 2019-03-30 23:19:52 +09:00
README.md docs: Update the links 2020-01-20 01:18:05 +09:00
run.go ui: Add an optional function Draw function to Game interface (#1107) 2020-03-24 12:01:37 +09:00
uicontext.go ui: Add an optional function Draw function to Game interface (#1107) 2020-03-24 12:01:37 +09:00
uidriver_glfw.go Remove driver getters for the playground 2019-09-03 01:47:48 +09:00
uidriver_js.go Move back driver getters to ebiten package 2019-09-03 01:46:11 +09:00
uidriver_mobile.go Move back driver getters to ebiten package 2019-09-03 01:46:11 +09:00
window.go ui: Add fuctions to maximize or minimize the window 2020-03-21 22:13:58 +09:00

Ebiten

Build Status Go Report Card

A dead simple 2D game library in Go

Ebiten is an open-source game library, with which you can develop 2D games with simple API for multi platforms in the Go programming language.

Overview

Platforms

  • Windows (No Cgo!)
  • macOS
  • Linux
  • FreeBSD
  • Android
  • iOS
  • Web browsers (Chrome, Firefox, Safari and Edge)

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

For installation on desktops, see the installation instruction.

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)

Packages

Community

Slack

#ebiten channel in Gophers Slack

License

Ebiten is licensed under Apache license version 2.0. See LICENSE file.