Как энтузиасты переписали файтинг-движок MUGEN на Go

27 июл 2026
1,510
239
63
3 недели

Если вы застали двухтысячные, то наверняка помните феномен M.U.G.E.N. Это был конструктор 2D-файтингов, где Наруто мог сойтись в бою с Шреком на арене из Mortal Kombat. Фанатское сообщество наклепало для него тысячи персонажей и арены, но сам движок со временем превратился в музейный экспонат. Закрытый исходный код, привязка к x86 и Windows, отсутствие нормальной игры по сети — все это застряло в эпохе Dial-Up.

В какой-то момент группе разработчиков это надоело. Так появился проект Ikemen GO — опенсорсный движок на языке Go, который подхватывает старые ассеты и заставляет их работать на современном железе.

IKEMEN GO Logo

Что за проект и откуда взялось название

Изначально проект развивался под именем Ikemen и писался японским разработчиком. Автор в какой-то момент забросил репозиторий, поэтому комьюнити сделало форк и переписало код на Go.

Кстати, у названия есть забавная расшифровка. IKEMEN — это аббревиатура от фразы Itsu made mo Kansei shinai Eien ni Mikansei ENgine, что переводится примерно как «Движок, который вечно остается незавершенным». Японский самоироничный юмор в чистом виде.

Реклама

Главная цель Ikemen GO простая: сохранить 100% обратную совместимость с ресурсами M.U.G.E.N 1.1 Beta, параллельно убрав древние технические ограничения.

Что внутри и чем это интересно

Движок подтягивает привычные файлы персонажей, арены, шрифты и звуки без необходимости их конвертировать. Но в отличие от оригинала, Ikemen GO дает разработчикам игр и игрокам нормальные современные возможности.

Вот что выделяется при знакомстве с репозиторием:

  • Кроссплатформенность без костылей. Благодаря Go движок компилируется под Windows, Linux (включая архитектуру ARM64), macOS (Intel и Apple Silicon) и даже собирается в APK под Android через Docker.
  • Сетевой код. В оригинальном M.U.G.E.N мультиплеер был либо отсутствующей фичей, либо подключался через сомнительный сторонний софт. Здесь сетевой режим заложен в архитектуру.
  • Гибкая отладка. Если вам интересно поковырять кишки движка, запустить его в режиме дебага в VS Code или GoLand можно буквально за пару минут.
  • Лицензия MIT. Сам код движка полностью открыт. Нюансы есть только у библиотеки FFmpeg, которая подключается динамически, и дефолтных графических ассетов интерфеса (они распространяются по CC-BY 3).

Как устроен запуск и сборка

Для обычного пользователя все предельно просто. В разделе релизов лежат готовые бинарники. Скачал архив, распаковал, запустил исполняемый файл Ikemen_GO.exe или Ikemen_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 показывает совсем другую сторону языка:

  • Как организовать игровой цикл (game loop) и обработку ввода с минимальной задержкой.
  • Как взаимодействовать с мультимедиа через Cgo и FFmpeg.
  • Как структурировать большой игровой проект без использования тяжелых сторонних движков вроде Unity или Godot.

Что в итоге

Ikemen GO — отличный пример того, как открытый код дает вторую жизнь заброшенным технологиям. Проект активен, PR принимаются, а в репозитории постоянно идет работа.

Если вы ищете необычный опенсорс-проект на Go для изучения или давно хотели собрать файтинг мечты без необходимости писать собственный рендерер — загляните в репозиторий. Начать изучение лучше с их Wiki, там подробно расписаны все новые функции, которых никогда не было в оригинальном M.U.G.E.N.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.