>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
Go

爱好者如何用 Go 重写了 MUGEN 格斗游戏引擎

如果你在2000年代长大,你可能记得 M.U.G.E.N 现象。这是一个2D格斗游戏制作工具,鸣人可以在真人快打的舞台上与史莱克对战。粉丝社区为它创作了数千个角色和场景,但引擎本身最终成为了古董。闭源代码、x86和Windows依赖、缺乏正经的在线游戏——所有这些都停留在了拨号上网时代。

最终,一群开发者厌倦了这种状况。Ikemen GO 项目由此诞生——一个用 Go 编写的开源引擎,可以拾取旧资源并让它们在现代硬件上运行。

IKEMEN GO Logo

这个项目是什么,名字从何而来

最初,这个项目以 Ikemen 为名开发,由一位日本开发者编写。后来作者放弃了仓库,于是社区创建了一个分支并用 Go 重写了代码。

顺便说一下,这个名字有一个有趣的意义。IKEMEN 是短语 Itsu made mo Kansei shinai Eien ni Mikansei ENgine 的首字母缩写,大致翻译为"永远无法完成的永恒未完成引擎"。纯粹的日本式自嘲幽默。

Ikemen GO 的主要目标很简单:在移除古老技术限制的同时,保持与 M.U.G.E.N 1.1 Beta 资源的100%向后兼容性。

里面有什么,为什么值得关注

引擎无需转换即可加载熟悉的角色文件、场景、字体和声音。但与原作不同,Ikemen GO 为游戏开发者和玩家提供了真正的现代能力。

探索仓库时,以下几点尤为突出:

  • 无需变通方案的跨平台支持。得益于 Go,引擎可以编译为 Windows、Linux(包括 ARM64 架构)、macOS(Intel 和 Apple Silicon)的版本,甚至可以通过 Docker 构建为 Android 的 APK。
  • 网络代码。在原作 M.U.G.E.N 中,多人游戏要么是缺失的功能,要么需要可疑的第三方软件。而在这里,网络模式已内置于架构中。
  • 灵活的调试。如果你想要深入研究引擎内部,只需几分钟就可以在 VS Code 或 GoLand 中以调试模式启动它。
  • MIT 许可证。引擎代码完全开放。只有 FFmpeg 库(动态链接)和默认界面图形资源(采用 CC-BY 3 分发)存在一些细微差别。

启动和构建是如何工作的

对于普通用户来说,一切都非常简单。发布页面包含现成的二进制文件。下载压缩包,解压,然后根据你的系统运行 Ikemen_GO.exeIkemen_GO.command 可执行文件。

如果你计划修改引擎本身或探索代码,过程会稍有不同。

首先,克隆仓库:

git clone https://github.com/ikemen-engine/Ikemen-GO.git
cd Ikemen-GO

对于本地运行,仅构建单个 Go 源文件是不够的——引擎需要基本的界面资源(精灵图、声音、菜单)。这些从相邻的仓库 Ikemen-GO-Screenpack 获取,并直接解压到项目根目录。

之后,你可以通过 IDE 启动调试,或为目标平台构建二进制文件。对于 Android 构建,作者准备了现成的 Docker 容器,省去了本地配置 NDK 的麻烦。

开发者为什么要关注这个代码

使用 Ikemen GO 有两种场景。

第一种是——你喜欢格斗游戏并想制作自己的。从头开始编写碰撞物理、判定框处理、精灵图加载和网络堆栈是一项需要数年才能完成的任务。将 Ikemen GO 作为一个现成的框架要高效得多。你使用引擎,配置 Lua 脚本,绘制角色,就能得到一个成品。

第二种是——学习 Go 中复杂系统的架构。在社区中,Go 通常与微服务、REST API、gRPC 和 CLI 工具相关联。Ikemen GO 展示了语言的完全不同的一面:

  • 如何组织游戏循环并以最小延迟处理输入。
  • 如何通过 Cgo 和 FFmpeg 与多媒体交互。
  • 如何在不使用 Unity 或 Godot 等重型第三方引擎的情况下构建大型游戏项目。

总结

Ikemen GO 是开源如何给被放弃的技术第二次生命的绝佳范例。该项目活跃,接受 PR,仓库中持续有工作在进行。

如果你正在寻找一个不寻常的开源 Go 项目来学习,或者一直想制作你梦想中的格斗游戏而无需自己编写渲染器——请看看这个仓库。开始探索的最佳起点是他们的 Wiki,其中详细介绍了原作 M.U.G.E.N 中从未存在过的所有新功能。

相关项目