Engo

Engo是一个用Go编写的开源2D游戏引擎。(Engo is an open-source 2D game engine written in Go.)

Github星跟踪图

Engo

一个用 Go 编写的跨平台游戏引擎,遵循实体组件系统范式的解释。目前 Engo 可以编译到 Mac OSX、Linux 和 Windows。随着 Go 1.4 的发布,对 Android 的支持和 iOS 兼容性的开始,移动端已经被添加为发布目标。此外,还提供了 Web 支持(wasm)。

v1.0 现已推出! 为了庆祝,很快就会有一个游戏果酱来庆祝这个版本,开始实际构建东西,希望能找到任何问题。更新将很快到来。

保持联系/贡献

我们有一个 gitter 聊天室,供想要进一步讨论 engo 的人加入。我们很乐意讨论bug、功能请求,也很乐意听到您正在开发的项目。

入门

理论:common 与 engo

目前在这个仓库里有两个主要的重要包:github.com/EngoEngine/engo 和github.com/EngoEngine/engo/common。

顶级的 engo 包包含了创建窗口、启动游戏、创建 OpenGL 上下文和处理输入的功能。它被设计用于按照 github.com/EngoEngine/ecs 规范设计的系统。通用包中包含了我们对常见游戏开发系统(如渲染系统或相机系统)的 ECS 实现。

练习。让它运行

  1. 首先,你必须安装一些依赖关系。
  2. 如果你在 Debian/Ubuntu 上运行: sudo apt-get install libasound2-dev libglu1-mesa-dev freeglut3-dev mesa-common-dev xorg-dev libgl1-mesa-dev git-all。
  3. 如果你在 Windows 上运行,你需要一个 go 工具可以使用的 gcc 编译器,并在你的 PATH 环境变量中加入 gcc.exe。我们推荐使用 Mingw,因为它已经过测试。你还需要安装 git,我们推荐你从 Git 的官方网站 上下载。
  4. 如果你在 OSX 上,你还需要 Git。你可以在 这里 找到说明。你也可以用 homebrew 来安装 git。如果你有任何问题,请打开一个问题
  5. 然后,你可以去获取它:去获取 go get -u github.com/EngoEngine/engo。
  6. 你可能还想获得特定平台构建的依赖关系,以便像 godef 这样的构建工具能够使用它们:go get -u -tags js ./... go get -u -tags android ./...
  7. 现在,你有两个选择。
  8. 访问 我们的网站,里面有一个完整的教程系列 关于如何创建你自己的游戏,除此之外,还有一些概念性的解释。
  9. 在我们的 demos 文件夹 中查看一些demo。
  10. 最后,如果你遇到了问题,如果你遇到了bug,或者想申请一个功能,请随时给我们发DM或者 创建一个问题

自 v1.0 以来的突破性变化

Engo 总是在进行大量的优化并不断获得新的功能。然而,这有时意味着事情会被打破。为了让您更容易过渡,我们列出了这些更改,最近的更改在顶部。如果您遇到任何问题,请通过 gitter 联系我们。

  • TMXObject 的宽度和高度以像素为单位,并且可以是小数。这已经从一个 int 改为 float64。
  • TMXTileset 现在使用 Spritesheet 而不是 Texture。这有助于更好地跟踪指南,并允许gid不从零开始,也不允许在其中有跳转,以及瓷砖表的边界和间距。
  • TMX Level 的对象已经全部归入 Object,而不是像 "PolyLineObject "这样的独立对象。这是为了与TMX格式保持一致。
  • Shader 接口现在有一个 SetCamera(*CameraSystem) 方法。该方法允许着色器在摄像机系统发生变化时自动更新它,例如在场景之间或添加摄像机系统时。
  • 域名 engo.io 已经过期。现在使用 github.com/EngoEngine/engo 作为导入路径,网站位于 engoengine.github.io。

通往 v1.1 的路线图

v1.1 的问题列表可以在 这里 找到。我们总是有改进的空间 欢迎提交建议、开放问题,让我们知道如何改进。

历程

Engo,原名 Engi,由 ajhager 编写,是一个通用的 Go 游戏引擎。由于希望将其打造成一个 "ECS "游戏引擎,它被分叉到 github.com/paked/engi。在经历了几次迭代之后,决定将该项目改名为 Engo,并在 GitHub 上重新发布。

归功于

感谢每一个曾在 Engo. 工作过或与 Engo. 合作的人,没有你们,这一切都不可能实现,你们的帮助真的很神奇。没有你们,这一切都不可能实现,你们的帮助真的很神奇。

这些都是使 engo 成为可能的第三方项目。

  • 原有的 engi 游戏引擎是基于 engo 的(BSD 授权)
  • Oto,一个低级的跨平台的声音播放库。AudioSystem 使用了它,并且是基于 Ebiten 中使用的音频包。


(The first version translated by vz on 2020.08.22)

主要指标

概览
名称与所有者EngoEngine/engo
主编程语言Go
编程语言Go (语言数: 3)
平台Linux, Mac, Windows
许可证MIT License
所有者活动
创建于2014-11-12 05:50:03
推送于2025-04-16 23:34:06
最后一次提交2024-07-12 16:03:02
发布数9
最新版本名称v1.0.8 (发布于 )
第一版名称v1.0 (发布于 )
用户参与
星数1.8k
关注者数47
派生数134
提交数1.2k
已启用问题?
问题数365
打开的问题数49
拉请求数390
打开的拉请求数3
关闭的拉请求数52
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?

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: github.com/EngoEngine/engo and github.com/EngoEngine/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 github.com/EngoEngine/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 github.com/EngoEngine/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 js ./...
    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.

  • TMXObject Width and Height is in pixels, and can be fractional. This has changed from an int to a float64.
  • TMXTileset now uses a Spritesheet instead of a Texture. This helps keep track of the guid better and allows the gid to not start at zero and have skips in it, as well as for borders and spacing in the tile sheet.
  • TMX Level's objects have all been rolled into Object rather than have separate things like "PolyLineObject". This is to be
    consistent with the TMX format.
  • The Shader interface now has a SetCamera(*CameraSystem) method. This method allows shaders to automatically update the camera system as it changes, such as between scenes or when the camera system is added.
  • The domain engo.io has expired. Now use github.com/EngoEngine/engo as the import path, and the site can be located at
    engoengine.github.io

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.