Comment des passionnés ont réécrit le moteur de jeu de combat MUGEN en Go
Si vous avez grandi dans les années 2000, vous vous souvenez probablement du phénomène M.U.G.E.N. C'était un constructeur de jeux de combat 2D où Naruto pouvait affronter Shrek sur un stage de Mortal Kombat. La communauté de fans en a créé des milliers de personnages et de stages, mais le moteur lui-même est finalement devenu une relique de musée. Code source fermé, dépendance x86 et Windows, absence de jeu en ligne véritable — tout cela est resté bloqué à l'ère du modem commuté.
À un moment donné, un groupe de développeurs en a eu marre. C'est ainsi qu'est né le projet Ikemen GO — un moteur open source écrit en Go qui reprend les anciennes ressources et les fait fonctionner sur du matériel moderne.
Qu'est-ce que ce projet et d'où vient le nom
Initialement, le projet a été développé sous le nom Ikemen par un développeur japonais. À un moment donné, l'auteur a abandonné le dépôt, alors la communauté a créé un fork et réécrit le code en Go.
Au fait, le nom a une signification amusante. IKEMEN est un acronyme pour la phrase Itsu made mo Kansei shinai Eien ni Mikansei ENgine, qui se traduit approximativement par « le moteur qui reste éternellement inachevé ». De l'humour auto-dépréciateur typiquement japonais.
L'objectif principal d'Ikemen GO est simple : préserver une compatibilité à 100 % avec les ressources M.U.G.E.N 1.1 Beta, tout en supprimant les anciennes limitations techniques.
Ce qu'il y a dedans et pourquoi c'est intéressant
Le moteur importe les fichiers de personnages, stages, polices et sons familiers sans avoir besoin de les convertir. Mais contrairement à l'original, Ikemen GO offre aux développeurs de jeux et aux joueurs des capacités modernes appropriées.
Voici ce qui ressort lors de l'exploration du dépôt :
- Multiplateforme sans contournements. Grâce à Go, le moteur se compile pour Windows, Linux (y compris l'architecture ARM64), macOS (Intel et Apple Silicon), et se construit même en APK pour Android via Docker.
- Code réseau. Dans M.U.G.E.N original, le multijoueur était soit une fonctionnalité manquante, soit nécessitait des logiciels tiers douteux. Ici, le mode réseau est intégré à l'architecture.
- Débogage flexible. Si vous voulez explorer les rouages du moteur, vous pouvez littéralement le lancer en mode débogage dans VS Code ou GoLand en quelques minutes.
- Licence MIT. Le code du moteur est entièrement ouvert. Il y a des nuances uniquement avec la bibliothèque FFmpeg, qui est liée dynamiquement, et les ressources graphiques de l'interface par défaut (elles sont distribuées sous CC-BY 3).
Comment fonctionnent le lancement et la compilation
Pour un utilisateur lambda, tout est extrêmement simple. La section des versions contient des binaires prêts à l'emploi. Vous avez téléchargé l'archive, vous l'avez extraite, et vous avez lancé l'exécutable Ikemen_GO.exe ou Ikemen_GO.command selon votre système.
Si vous envisagez de modifier le moteur lui-même ou d'explorer le code, le processus est légèrement différent.
D'abord, clonez le dépôt :
Pour une exécution locale, une simple compilation du code source Go ne suffit pas — le moteur a besoin de ressources d'interface de base (sprites, sons, menus). Celles-ci sont récupérées depuis le dépôt adjacent Ikemen-GO-Screenpack et extraites directement dans le répertoire racine du projet.
Après cela, vous pouvez lancer le débogage via l'IDE ou compiler un binaire pour la plateforme cible. Pour la compilation pour Android, les auteurs ont préparé des conteneurs Docker prêts à l'emploi, ce qui élimine les difficultés de configuration du NDK local.
Pourquoi un développeur devrait examiner ce code
Il y a deux scénarios pour utiliser Ikemen GO.
Le premier est — vous adorez les jeux de combat et voulez créer le vôtre. Écrire la physique des collisions, la gestion des hitbox, le chargement des sprites et une pile réseau from scratch est une tâche qui prend des années. Utiliser Ikemen GO comme un framework prêt à l'emploi est beaucoup plus efficace. Vous prenez le moteur, vous configurez des scripts Lua, vous dessinez des personnages, et vous obtenez un produit fini.
Le deuxième scénario est — étudier l'architecture de systèmes complexes en Go. Dans la communauté, Go est généralement associé aux microservices, aux API REST, à gRPC et aux utilitaires CLI. Ikemen GO montre un côté complètement différent du langage :
- Comment organiser une game loop et la gestion des entrées avec une latence minimale.
- Comment interagir avec le multimédia via Cgo et FFmpeg.
- Comment structurer un grand projet de jeu sans utiliser des moteurs tiers lourds comme Unity ou Godot.
En conclusion
Ikemen GO est un excellent exemple de la façon dont l'open source donne une seconde vie aux technologies abandonnées. Le projet est actif, les PR sont acceptées, et du travail est constamment en cours dans le dépôt.
Si vous cherchez un projet Go open source inhabituel à étudier ou si vous avez toujours voulu créer le jeu de combat de vos rêves sans avoir besoin d'écrire votre propre moteur de rendu — jetez un œil au dépôt. Le meilleur endroit pour commencer à explorer est leur Wiki, qui détaille toutes les nouvelles fonctionnalités qui n'ont jamais existé dans le M.U.G.E.N original.
Projets similaires