Wie Enthusiasten die MUGEN Fighting-Game-Engine in Go neu geschrieben haben
Wenn du in den 2000ern erwachsen geworden bist, erinnerst du dich wahrscheinlich an das M. U. G. E. N-Phänomen. Es war ein 2D-Fighting-Game-Konstruktor, in dem Naruto gegen Shrek auf einer Bühne aus Mortal Kombat kämpfen konnte. Die Fan-Community erstellte Tausende von Charakteren und Bühnen dafür, aber die Engine selbst wurde irgendwann zum Museumsstück. Geschlossener Quellcode, x86- und Windows-Abhängigkeit, kein echtes Online-Spiel – alles blieb im Zeitalter des Modems stecken.
Irgwann hatten einige Entwickler genug davon. So entstand das Ikemen GO-Projekt – eine Open-Source-Engine in Go, die alte Assets aufnimmt und auf moderner Hardware zum Laufen bringt.
Was ist dieses Projekt und woher kommt der Name
Ursprünglich wurde das Projekt unter dem Namen Ikemen von einem japanischen Entwickler entwickelt. Irgendwann verließ der Autor das Repository, also erstellte die Community einen Fork und schrieb den Code in Go neu.
Der Name hat übrigens eine lustige Bedeutung. IKEMEN ist ein Akronym für den Satz Itsu made mo Kansei shinai Eien ni Mikansei ENgine, was ungefähr „Die Engine, die für immer unvollendet bleibt" bedeutet. Typisch japanischer selbstironischer Humor.
Das Hauptziel von Ikemen GO ist einfach: 100% Abwärtskompatibilität mit M. U. G. E. N 1.1 Beta-Ressourcen bewahren und gleichzeitig die alten technischen Einschränkungen entfernen.
Was steckt drin und warum ist es interessant
Die Engine lädt die vertrauten Charakterdateien, Bühnen, Schriften und Sounds, ohne sie konvertieren zu müssen. Aber anders als das Original bietet Ikemen GO Entwicklern und Spielern echte moderne Funktionen.
Das sticht hervor, wenn man das Repository erkundet:
- Plattformübergreifend ohne Workarounds. Dank Go kompiliert die Engine für Windows, Linux (inklusive ARM64-Architektur), macOS (Intel und Apple Silicon) und baut sogar als APK für Android über Docker.
- Netzwerkcode. Im Original M. U. G. E. N war Multiplayer entweder eine fehlende Funktion oder erforderte zwielichtige Drittanbieter-Software. Hier ist der Netzwerkmodus in die Architektur eingebaut.
- Flexibles Debugging. Wenn du in die Engine-Interna eintauchen möchtest, kannst du sie buchstäblich in wenigen Minuten im Debug-Modus in VS Code oder GoLand starten.
- MIT-Lizenz. Der Engine-Code ist vollständig offen. Es gibt nur Nuancen bei der FFmpeg-Bibliothek, die dynamisch verknüpft ist, und den Standard-Grafik-Assets der Oberfläche (sie werden unter CC- BY 3 verteilt).
Wie Starten und Bauen funktioniert
Für einen normalen Benutzer ist alles extrem einfach. Im Bereich Releases gibt es fertige Binärdateien. Archiv heruntergeladen, entpackt und die ausführbare Datei Ikemen_GO.exe oder Ikemen_GO.command je nach System ausgeführt.
Wenn du planst, die Engine selbst zu modifizieren oder den Code zu erkunden, ist der Prozess etwas anders.
Zuerst das Repository klonen:
git clone https://github.com/ikemen-engine/Ikemen-GO.git
cd Ikemen-GO
Für das lokale Ausführen reicht ein einzelner Go-Quellcode-Build nicht aus – die Engine benötigt grundlegende Oberflächenressourcen (Sprites, Sounds, Menüs). Diese werden aus dem benachbarten Repository Ikemen-GO-Screenpack bezogen und direkt in das Stammverzeichnis des Projekts entpackt.
Danach kannst du das Debugging über die IDE starten oder eine Binärdatei für die Zielplattform bauen. Für den Android-Build haben die Autoren fertige Docker-Container vorbereitet, was das mühsame Einrichten des lokalen NDK überflüssig macht.
Warum ein Entwickler sich diesen Code ansehen sollte
Es gibt zwei Szenarien für die Nutzung von Ikemen GO.
Das erste ist – du liebst Fighting Games und möchtest dein eigenes bauen. Kollisionsphysik, Hitbox-Handling, Sprite-Laden und einen Netzwerk-Stack von Grund auf zu schreiben, ist eine Aufgabe, die Jahre dauert. Ikemen GO als fertiges Framework zu nutzen ist viel effizienter. Du nimmst die Engine, konfigurierst Lua-Skripte, zeichnest Charaktere und erhältst ein fertiges Produkt.
Das zweite Szenario ist – die Architektur komplexer Systeme in Go zu studieren. In der Community wird Go typischerweise mit Microservices, REST-APIs, gRPC und CLI-Tools assoziiert. Ikemen GO zeigt eine völlig andere Seite der Sprache:
- Wie man eine Game-Loop und Input-Handling mit minimaler Latenz organisiert.
- Wie man mit Multimedia über Cgo und FFmpeg interagiert.
- Wie man ein großes Spielprojekt strukturiert, ohne schwere Drittanbieter-Engines wie Unity oder Godot zu verwenden.
Das Fazit
Ikemen GO ist ein großartiges Beispiel dafür, wie Open Source aufgegebenen Technologien ein zweites Leben schenkt. Das Projekt ist aktiv, PRs werden angenommen und es wird ständig im Repository gearbeitet.
Wenn du ein ungewöhnliches Open-Source-Go-Projekt zum Studieren suchst oder schon lange dein Traum-Fighting-Game bauen wolltest, ohne einen eigenen Renderer schreiben zu müssen – wirf einen Blick auf das Repository. Der beste Einstiegspunkt ist ihr Wiki, das alle neuen Funktionen dokumentiert, die es im Original M. U. G. E. N nie gab.
Ähnliche Projekte