Engo is an open-source 2D game engine written in Go.
Go Shell
Clone or download
Noofbiz Merge pull request #562 from qutrace/master
fixed duplicate movement in CollisionSystem
Latest commit 09eb66d Jun 9, 2018
Permalink
Failed to load latest commit information.
common fixed duplicate movement in CollisionSystem Jun 8, 2018
demos added isometric demo May 23, 2018
math Gopherjs compatible Sin, Cos, Sqrt (#426) Mar 15, 2017
.before_install.sh test traffic manager on TravisCI May 13, 2018
.gitignore Rotation support (#216) May 2, 2016
.runtests.sh enable gopherjs tests on travisCI May 26, 2018
.travis.yml test traffic manager on TravisCI May 13, 2018
CONTRIBUTING.md Add a contributing guidelines (#396) Jan 6, 2017
LICENSE Update README.md (#248) Apr 26, 2016
README.md updated readme for v1.0 release May 26, 2018
appveyor.yml appveyor Mar 1, 2018
assets.go Linted engo Feb 24, 2018
assets_test.go enable gopherjs tests on travisCI May 26, 2018
axis.go adjusts the camera / mouse properly for high dpi devices May 15, 2018
axis_test.go Add GlobalScale option Mar 25, 2018
button.go Split into `engo` and `core` (#283) May 13, 2016
button_test.go changed keys to have Key prefix and be const Mar 18, 2018
clock.go made timer interface that typically uses time.Now().UnixNano(), but f… Feb 28, 2018
clock_test.go made timer interface that typically uses time.Now().UnixNano(), but f… Feb 28, 2018
cursor.go Add documentation to engo.io/engo package (#347) Jun 6, 2016
engo.go Add GlobalScale option Mar 25, 2018
engo_glfw.go adjusts the camera / mouse properly for high dpi devices May 15, 2018
engo_js.go enable gopherjs tests on travisCI May 26, 2018
engo_mobile.go fps tickers added to mobile (#536) Apr 29, 2018
engo_mobile_bind.go fps tickers added to mobile (#536) Apr 29, 2018
engo_mobile_bind_android.go added multi-touch support to mobile (#535) Apr 29, 2018
engo_mobile_bind_ios.go added multi-touch support to mobile (#535) Apr 29, 2018
engo_test.go testing for utils and scenes May 7, 2018
input.go added multi-touch support to mobile (#535) Apr 29, 2018
input_data.go changed keys to have Key prefix and be const Mar 18, 2018
input_keys.go changed build tags to include ios (#534) Apr 25, 2018
input_keys_glfw.go changed build tags to include ios (#534) Apr 25, 2018
keys.go Linted engo Feb 24, 2018
keys_test.go changed keys to have Key prefix and be const Mar 18, 2018
math.go added Line.AngleDeg method Jun 1, 2018
math_test.go added Line.AngleDeg method Jun 1, 2018
message.go Add documentation to engo.io/engo package (#347) Jun 6, 2016
message_test.go added test for messages Mar 3, 2018
scene.go remove ecs requirement from engo Mar 9, 2018
utils.go [WIP] Appveyor (#290) May 12, 2016

README.md

Engo

GoDoc Join the chat at https://gitter.im/EngoEngine/engo License Build Status Build status Go Report Card Coverage Status

A cross-platform game engine written in Go following an interpretation of the Entity Component System paradigm. Engo is currently compilable for Mac OSX, Linux and Windows. With the release of Go 1.4, supporting Android and the inception of iOS compatibility, mobile has been be added as a release target. Web support (gopherjs) is also available.

v1.0 is now available! To celebrate, there will be a game jam coming soon to celebrate the release, start actually building things and hopefully find any issues. Updates for this will come soon.

Getting in touch / Contributing

We have a gitter chat for people to join who want to further discuss engo. We are happy to discuss bugs, feature requests and would love to hear about the projects you are building!

Getting Started

Theory: common vs engo

There are currently two major important packages within this repository: engo.io/engo and engo.io/engo/common.

The top level engo package contains the functionality of creating windows, starting the game, creating an OpenGL context and handling input. It is designed to be used with Systems designed as per engo.io/ecs specifications. The common package contains our ECS implementations of common game development Systems like a RenderSystem or CameraSystem.

Practice: Getting it to Run

  1. First, you have to install some dependencies:
  2. If you're running on Debian/Ubuntu: sudo apt-get install libasound2-dev libglu1-mesa-dev freeglut3-dev mesa-common-dev xorg-dev libgl1-mesa-dev git-all
  3. If you're running on Windows you'll need a gcc compiler that the go tool can use and have gcc.exe in your PATH environmental variable. We recommend Mingw since it has been tested. You'll also need git installed, we recommend getting it from The official Git site
  4. If you're on OSX, you will also need Git. You can find instructions here. You can also use homebrew to install git as well. Open an issue if you have any issues
  5. Then, you can go get it: go get -u engo.io/engo
  6. You may also want to get the dependencies of platform specific builds, so that build tools like godef can use them: go get -u -tags netgo ./... go get -u -tags android ./...
  7. Now, you have two choices:
  8. Visit our website, which hosts a full-blown tutorial series on how to create your own game, and on top of that, has some conceptual explanations;
  9. Check out some demos in our demos folder.
  10. Finally, if you run into problems, if you've encountered a bug, or want to request a feature, feel free to shoot us a DM or create an issue.

Breaking Changes Since v1.0

Engo is always undergoing a lot of optimizations and constantly gets new features. However, this sometimes means things break. In order to make transitioning easier for you, we have a list of those changes, with the most recent being at the top. If you run into any problems, please contact us at gitter.

  • No breaking changes yet!

Roadmap to v1.1

A list of issues for v1.1 can be found here. There's always room for improvement! Feel free to submit proposals, open issues, and let us know how we can improve!

History

Engo, originally known as Engi was written by ajhager as a general purpose Go game engine. With a desire to build it into an "ECS" game engine, it was forked to github.com/paked/engi. After passing through several iterations, it was decided that the project would be rebranded and rereleased as Engo on its own GitHub organization.

Credits

Thank you to everyone who has worked on, or with Engo. None of this would be possible without you, and your help has been truly amazing.

These are 3rd party projects that have made engo possible.

  • The original engi game engine which engo was based off of (BSD license)
  • Oto, a low-level cross-platform library to play sound. The AudioSystem uses this and is based on the audio package used in Ebiten.