>_ DevTrendsen

Language

Home

Languages

Sections

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Security
Go

How Enthusiasts Rewrote the MUGEN Fighting Game Engine in Go

If you came of age in the 2000s, you probably remember the M.U.G.E.N phenomenon. It was a 2D fighting game constructor where Naruto could battle Shrek on a stage from Mortal Kombat. The fan community created thousands of characters and stages for it, but the engine itself eventually became a museum piece. Closed source code, x86 and Windows dependency, no proper online play — all of it got stuck in the dial-up era.

At some point, a group of developers got tired of this. That is how the Ikemen GO project came to be — an open-source engine written in Go that picks up old assets and makes them run on modern hardware.

IKEMEN GO Logo

What Is This Project and Where Did the Name Come From

Initially, the project was developed under the name Ikemen and was written by a Japanese developer. At some point, the author abandoned the repository, so the community made a fork and rewrote the code in Go.

By the way, the name has a funny meaning. IKEMEN is an acronym for the phrase Itsu made mo Kansei shinai Eien ni Mikansei ENgine, which translates roughly to "The engine that remains forever unfinished." Pure Japanese self-deprecating humor.

The main goal of Ikemen GO is simple: preserve 100% backward compatibility with M.U.G.E.N 1.1 Beta resources, while removing the ancient technical limitations.

What's Inside and Why Is It Interesting

The engine pulls in the familiar character files, stages, fonts, and sounds without needing to convert them. But unlike the original, Ikemen GO gives game developers and players proper modern capabilities.

Here is what stands out when exploring the repository:

  • Cross-platform without workarounds. Thanks to Go, the engine compiles for Windows, Linux (including ARM64 architecture), macOS (Intel and Apple Silicon), and even builds into an APK for Android via Docker.
  • Networking code. In the original M.U.G.E.N, multiplayer was either a missing feature or required dubious third-party software. Here, network mode is built into the architecture.
  • Flexible debugging. If you want to dig into the engine internals, you can literally launch it in debug mode in VS Code or GoLand in a couple of minutes.
  • MIT license. The engine code is completely open. There are nuances only with the FFmpeg library, which is linked dynamically, and the default interface graphics assets (they are distributed under CC-BY 3).

How Launching and Building Works

For a regular user, everything is extremely simple. The releases section contains ready-made binaries. Downloaded the archive, extracted it, and ran the executable Ikemen_GO.exe or Ikemen_GO.command depending on your system.

If you plan to modify the engine itself or explore the code, the process is slightly different.

First, clone the repository:

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

For local running, a single Go source build is not enough — the engine needs basic interface resources (sprites, sounds, menus). These are pulled from the neighboring repository Ikemen-GO-Screenpack and extracted directly into the project's root directory.

After that, you can launch debugging via IDE or build a binary for the target platform. For building for Android, the authors have prepared ready-made Docker containers, which eliminates the pain of setting up the local NDK.

Why a Developer Should Look at This Code

There are two scenarios for using Ikemen GO.

The first is — you love fighting games and want to build your own. Writing collision physics, hitbox handling, sprite loading, and a network stack from scratch is a task that takes years. Treating Ikemen GO as a ready-made framework is much more efficient. You take the engine, configure Lua scripts, draw characters, and get a finished product.

The second scenario is — studying the architecture of complex systems in Go. In the community, Go is typically associated with microservices, REST APIs, gRPC, and CLI utilities. Ikemen GO shows a completely different side of the language:

  • How to organize a game loop and input handling with minimal latency.
  • How to interact with multimedia via Cgo and FFmpeg.
  • How to structure a large game project without using heavy third-party engines like Unity or Godot.

The Bottom Line

Ikemen GO is a great example of how open source gives abandoned technologies a second life. The project is active, PRs are accepted, and work is constantly ongoing in the repository.

If you are looking for an unusual open-source Go project to study or have long wanted to build your dream fighting game without needing to write your own renderer — take a look at the repository. The best place to start exploring is their Wiki, which details all the new features that never existed in the original M.U.G.E.N.

Related projects