Ebitengine - A dead simple 2D game engine for Go
Go to file
seebs 982a68e5a2
inpututil: use slices for maps where keys are small contiguous integers (#1169)
Durations for key presses and gamepad button presses were being stored
in map[int]int, where the key values were always small integers, and
furthermore, were always contiguous and contained the whole set. It's
much faster and cheaper to do those with slices.

We could probably do this with mouse buttons, but I was wary of that
code because I don't see any handling for more-than-three-button
mice. Similar logic could perhaps apply to touch events, but there
it might make more sense to use a dynamic allocation of some kind.

It might be more efficient to just swap the two slices back and
forth, computing the new values from the previous values and
then swapping the slice arrays themselves, but that seemed like
a more intrusive change.
2020-05-25 03:20:21 +09:00
.github Add FUNDING.yml 2019-12-07 19:00:46 +09:00
audio docs: Use 'Deprecated:' annotation 2020-05-19 01:50:55 +09:00
cmd/ebitenmobile Remove MonoGame support 2020-05-08 19:32:28 +09:00
docs docs: Remove unused contents 2019-03-22 03:23:48 +09:00
ebitenutil docs: Use 'Deprecated:' annotation 2020-05-19 01:50:55 +09:00
examples examples/raycasting: Use RunGame 2020-05-24 00:12:44 +09:00
inpututil inpututil: use slices for maps where keys are small contiguous integers (#1169) 2020-05-25 03:20:21 +09:00
internal graphicsdriver/opengl: Bug fix: fmt arguments 2020-05-25 02:36:45 +09:00
mobile docs: Use 'Deprecated:' annotation 2020-05-19 01:50:55 +09:00
text shaderir: Add func params 2020-05-13 23:31:17 +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 Update Go version to 1.14.3 for testing 2020-05-19 02:22:21 +09:00
AUTHORS Add Peter Wunder to AUTHORS 2020-05-13 18:07:13 +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 docs: Use 'Deprecated:' annotation 2020-05-19 01:50:55 +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 Remove MonoGame support 2020-05-08 19:32:28 +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 driver: Bug fix: (Key).String might cause infinite loop 2020-04-22 00:32:35 +09:00
geom_test.go affine: Add TestGeoMEquals 2019-06-09 06:56:25 +09:00
geom.go docs: Use 'Deprecated:' annotation 2020-05-19 01:50:55 +09:00
go.mod Remove go2dotnet from go.mod 2020-05-17 14:28:01 +09:00
go.sum Remove go2dotnet from go.mod 2020-05-17 14:28:01 +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 ebiten: Skip some slow tests on GopherJS 2020-04-19 02:09:02 +09:00
image.go docs: Use 'Deprecated:' annotation 2020-05-19 01:50:55 +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 docs: Use 'Deprecated:' annotation 2020-05-19 01:50:55 +09:00
init.go Refactoring: Add init.go 2020-02-11 11:14:19 +09:00
input.go docs: Use 'Deprecated:' annotation 2020-05-19 01:50:55 +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 Update README 2020-05-14 17:40:47 +09:00
run.go docs: Use 'Deprecated:' annotation 2020-05-19 01:50:55 +09:00
uicontext.go ebiten: Ensure that Update is called at least once before Draw in the first frame 2020-05-15 04:04:29 +09:00
uidriver_glfw.go Remove driver getters for the playground 2019-09-03 01:47:48 +09:00
uidriver_js.go Remove MonoGame support 2020-05-08 19:32:28 +09:00
uidriver_mobile.go Move back driver getters to ebiten package 2019-09-03 01:46:11 +09:00
window.go ui: Forbid RestoreWindow when the window is not maximized nor minimized 2020-03-31 02:48:22 +09:00

Ebiten

Build Status Go Report Card

A dead simple 2D game library for Go

Ebiten is an open source game library for the Go programming language. Ebiten's simple API allows you to quickly and easily develop 2D games that can be deployed across multiple platforms.

Overview

Platforms

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.