英文原文正文为项目原始 README(英文),本站后续会翻译为中文,当前仅剔除图片与无关章节并统一排版。
恩果
一个用 Go 编写的跨平台游戏引擎,遵循实体组件系统范式的一种实现。Engo 目前可以在 Mac OSX、Linux 和 Windows 上编译。随着 Go 1.4 的发布,支持 Android 并开始兼容 iOS,移动端已被添加为发行目标。网页支持(wasm)也可用。
v1.0 现已发布!为庆祝这一发行,将很快举办一个游戏创作马拉松(game jam),以庆祝发布、实际开始构建内容,并希望找到任何问题。关于此活动的更新将很快发布。
联系 / 贡献
我们有一个 gitter 聊天群,供希望进一步讨论 engo 的人加入。我们很乐意讨论错误、功能请求,并且非常想了解你们正在构建的项目!
入门指南
理论:common 与 engo
当前这个仓库中有两个主要的重要包:github.com/EngoEngine/engo 和 github.com/EngoEngine/engo/common。
顶层 engo 包包含窗口创建、游戏启动、OpenGL 上下文创建以及输入处理的功能。它被设计为与按照 github.com/EngoEngine/ecs 规范设计的系统一起使用。common 包包含我们对常用游戏开发系统(如 RenderSystem 或 CameraSystem)的 ECS 实现。
实践:运行它
- 首先,你必须安装一些依赖项:
- 如果你正在使用 Debian/Ubuntu:
sudo apt-get install libasound2-dev libglu1-mesa-dev freeglut3-dev mesa-common-dev xorg-dev libgl1-mesa-dev git-all - 如果你在 Windows 上运行,你将需要一个 go 工具可以使用的 gcc 编译器,并且在你的 PATH 环境变量中有
gcc.exe。我们推荐 Mingw,因为它已经过测试。你还需要安装 git,我们推荐从 Git 官方网站 获取。 - 如果你使用的是 OSX,你还需要 Git。你可以在这里找到安装说明。你也可以使用 homebrew 来安装 git。如果你遇到任何问题,请提交问题
- 如果你正在使用 Debian/Ubuntu:
- 然后,你可以去获取它:
go get -u github.com/EngoEngine/engo- 您可能还想获取平台特定构建的依赖项,以便像 godef 这样的构建工具可以使用它们:
go get -u -tags js ./...go get -u -tags android ./...
- 您可能还想获取平台特定构建的依赖项,以便像 godef 这样的构建工具可以使用它们:
- 现在,你有两个选择:
- 最后,如果你遇到问题,遇到错误,或想请求一个功能,请随时给我们发私信或创建一个问题。
自 v1.0 起的重大更改
Engo 总是在进行大量优化,并不断获得新功能。然而,这有时意味着某些功能可能会出现问题。为了让您更轻松地过渡,我们列出了这些更改,最近的更改排在最上面。如果您遇到任何问题,请通过 gitter 联系我们。
- TMXObject 宽度和高度以像素为单位,可以是分数。这已经从整数变为了float64。
- TMXTileset 现在用精灵图集代替纹理。这有助于更好地跟踪 guid,也让 gid 不会从零开始,避免跳跃,同时也方便瓦片图块的边界和间距。
- TMX Level的对象都被整合进了Object,而不是像“PolyLineObject”那样分开。这是为了符合TMX格式。
- Shader 接口现在有一个
SetCamera(*CameraSystem)方法。此方法允许着色器在相机系统发生变化时自动更新,例如在场景之间切换或添加相机系统时。 - 域名 engo.io 已经过期。现在请使用
github.com/EngoEngine/engo作为导入路径,网站可以在 engoengine.github.io 找到。
v1.1 Roadmap
v1.1 的问题列表可以在 这里 找到。总有改进的空间!欢迎提交提案、打开问题,并告诉我们如何改进!
历史
Engo,最初被称为 Engi,由 ajhager 编写,作为一个通用的 Go 游戏引擎。怀着将其构建成“ECS”游戏引擎的愿望,它被分叉到 github.com/paked/engi。经过几次迭代后,决定将该项目重新命名并在其独立的 GitHub 组织中以 Engo 的名义重新发布。
致谢
感谢所有参与或与 Engo 一起工作的每一个人。没有你们,这一切都不可能实现,你们的帮助真的非常棒。
- ajhager:构建了原始的
engi,engo 就是基于它的。 - paked:添加 ECS 元素,项目维护和管理。
- Newbrict:字体渲染,TMX 支持。
- EtienneBruines:重写 OpenGL 代码,维护并协助重新设计 API。
- otraore:添加 GopherJS 支持,维护。
- 多年来向该项目的任何版本提交 PR 或问题的所有其他人
这些是使 engo 成为可能的第三方项目。
- 本文标题:engo - Engo 是一个用 Go 编写的开源 2D 游戏引擎
- 本文链接:https://cn121.com/gameengine/engoengine-engo.html
- 原项目:EngoEngine/engo 版权归原作者 EngoEngine 及贡献者所有
- 收录信息:本站于 2026-10-05 收录本项目,本页所列协议与仓库指标均为收录当时的状态;该日期之后原项目的版本更新与协议变更,本页不作同步。
- 开源协议:收录时本项目采用 MIT(查看 LICENSE 原文),本站转载其原始文档(未改动文字,仅剔除图片与无关章节);使用、修改、分发请以该仓库 LICENSE 原文为准。
- 站点出处:本文首发于 OneTwoOne,收录自 GitHub 开源项目 EngoEngine/engo。
- 内容说明:本页正文为原项目 README 原文(英文),本站后续会翻译为中文(当前尚未译出,仅将二级标题译为中文,便于按栏目定位;标题原文可在下方原仓库中查看),仅剔除了图片与赞助等无关章节、并把相对链接改为绝对地址;页首简介为机器翻译自仓库描述。
- 引用声明:商业转载、第三方聚合或 AI 检索训练引用时,请务必保留以上来源出处、本文永久链接,以及原项目的版权声明与许可信息。
- 下架通道:若原项目此后变更或收紧了许可协议、或作者/权利人认为本站的收录方式(译文、排版适配、简介翻译等)超出其授权范围,请通过 xyd3302001@163.com 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。