>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
Go

Hoe enthousiastelingen de MUGEN vechtspelengine opnieuw schreven in Go

Als je opgroeide in de jaren 2000, herinner je je waarschijnlijk het M.U.G.E.N-fenomeen. Het was een 2D vechtspelconstructor waar Naruto het tegen Shrek kon opnemen op een podium uit Mortal Kombat. De fancommunity creëerde duizenden personages en podia ervoor, maar de engine zelf werd uiteindelijk een museumstuk. Gesloten broncode, x86- en Windows-afhankelijkheden, geen echte online gameplay — het bleef allemaal steken in het inbel-tijdperk.

Op een gegeven moment werden een groep ontwikkelaars hier moe. Zo ontstond het Ikemen GO-project — een open-source engine geschreven in Go die oude assets oppakt en ze laat draaien op moderne hardware.

IKEMEN GO Logo

Wat is dit project en waar komt de naam vandaan

Aanvankelijk werd het project ontwikkeld onder de naam Ikemen en was het geschreven door een Japanse ontwikkelaar. Op een gegeven moment verliet de auteur de repository, dus de community maakte een fork en herschreef de code in Go.

Trouwens, de naam heeft een grappige betekenis. IKEMEN is een acroniem voor de zin Itsu made mo Kansei shinai Eien ni Mikansei ENgine, wat ongeveer vertaalt naar "De engine die voor altijd onafgewerkt blijft." Puur Japanse zelfbekritiserende humor.

Het hoofddoel van Ikemen GO is simpel: 100% achterwaartse compatibiliteit behouden met M.U.G.E.N 1.1 Beta resources, terwijl de oude technische beperkingen worden verwijderd.

Wat zit erin en waarom is het interessant

De engine neemt de vertrouwde characterbestanden, podia, lettertypen en geluiden mee zonder dat conversie nodig is. Maar in tegenstelling tot het origineel geeft Ikemen GO gamedevelopers en spelers echte moderne mogelijkheden.

Hier is wat opvalt bij het verkennen van de repository:

  • Cross-platform zonder workarounds. Dankzij Go compileert de engine voor Windows, Linux (inclusief ARM64-architectuur), macOS (Intel en Apple Silicon), en bouwt zelfs naar een APK voor Android via Docker.
  • Netwerkcode. In het originele M.U.G.E.N was multiplayer ofwel een ontbrekende functie of vereiste het twijfelachtige software van derden. Hier is netwerkmodus ingebouwd in de architectuur.
  • Flexibele debugging. Als je in de engine-internals wilt duiken, kun je hem letterlijk in debug-modus starten in VS Code of GoLand in een paar minuten.
  • MIT-licentie. De enginecode is volledig open. Er zijn alleen nuances met de FFmpeg-bibliotheek, die dynamisch wordt gelinkt, en de standaard interface-graphics assets (ze worden gedistribueerd onder CC-BY 3).

Hoe starten en bouwen werkt

Voor een gewone gebruiker is alles extreem eenvoudig. De releases-sectie bevat kant-en-klare binaries. Download het archief, pak het uit en voer de executable Ikemen_GO.exe of Ikemen_GO.command uit afhankelijk van je systeem.

Als je van plan bent de engine zelf te modificeren of de code te verkennen, is het proces iets anders.

Kloon eerst de repository:

Om lokaal te draaien is een enkele Go-bronbuild niet genoeg — de engine heeft basis interface-resources nodig (sprites, geluiden, menu's). Deze worden opgehaald uit de naburige repository Ikemen-GO-Screenpack en direct uitgepakt in de hoofdmap van het project.

Daarna kun je debugging starten via IDE of een binary bouwen voor het doelplatform. Voor het bouwen voor Android hebben de auteurs kant-en-klare Docker-containers voorbereid, wat de pijn wegneemt van het lokaal instellen van de NDK.

Waarom een developer naar deze code zou moeten kijken

Er zijn twee scenario's voor het gebruiken van Ikemen GO.

De eerste is — je houdt van vechtspellen en wilt je eigen maken. Collision physics, hitbox-handling, sprite-loading en een netwerkstack helemaal opnieuw schrijven is een taak die jaren kost. Ikemen GO als kant-en-klaar framework gebruiken is veel efficiënter. Je neemt de engine, configureert Lua-scripts, tekent personages en krijgt een afgewerkt product.

Het tweede scenario is — de architectuur bestuderen van complexe systemen in Go. In de community wordt Go typisch geassocieerd met microservices, REST API's, gRPC en CLI-hulpprogramma's. Ikemen GO toont een heel ander aspect van de taal:

  • Hoe een gameloop en input-handling organiseren met minimale latentie.
  • Hoe interageren met multimedia via Cgo en FFmpeg.
  • Hoe een groot gameproject structureren zonder zware third-party engines zoals Unity of Godot te gebruiken.

Conclusie

Ikemen GO is een geweldig voorbeeld van hoe open source verlaten technologieën een tweede leven geeft. Het project is actief, PR's worden geaccepteerd en er wordt constant gewerkt in de repository.

Als je op zoek bent naar een ongewoon open-source Go-project om te bestuderen of al lang een droom-vechtspel wilt bouwen zonder je eigen renderer te hoeven schrijven — neem een kijkje in de repository. De beste plek om te beginnen met verkennen is hun Wiki, die alle nieuwe functies beschrijft die nooit in het originele M.U.G.E.N bestonden.

Gerelateerde projecten