ファンがMUGEN 格闘ゲームエンジンをGoで書き直した方法
2000年代に育った人なら、きっとM.U.G.E.N現象を覚えているでしょう。2D 格闘ゲーム作成ツールで、ナルトがモータルコンバットのステージ上でシェrekと戦えました。ファンコミュニティは数千ものキャラクターやステージを作成しましたが、エンジン自体はいつしか博物館の展示物のようになりました。クローズドソースコード、x86とWindowsへの依存、適切なオンラインプレイの欠如—すべてがダイヤルアップ時代のまま停滞していました。
ある時点で、開発者たちの忍耐が限界を迎えました。それがIkemen GOプロジェクトの始まりです—古いアセットを最新のハードウェアで動作させるGoで書かれたオープンソースのエンジンです。
このプロジェクトとは何か、名前はどこから来たのか
最初は、プロジェクトはIkemenという名前で日本の开发者によって開発されていました。ある時点で作者がリポジトリを投げ出してしまったため、社区がフォークしてコードをGoで書き直しました。
ちなみに、この名前には面白い意味があります。IKEMENはItsu made mo Kansei shinai Eien ni Mikansei ENgineというフレーズの略語で、日本語に訳すと「お永远に完成しない未完成エンジン」となります。典型的な日本の自虐的なユーモアですね。
Ikemen GOの主な目標はシンプルです。M.U.G.E.N 1.1 Betaのリソースとの100%の後方互換性を保ちながら、古びた技術的制約を取り除くことです。
内部構造と、なぜ注目に値するのか
このエンジンは、キャラクターファイル、ステージ、フォント、サウンドなどの使い慣れたアセットを、変換なしでそのまま読み込みます。しかし、元のバージョンとは異なり、Ikemen GOはゲーム開発者とプレイヤーに適切な現代的な機能を提供します。
リポジトリを探索すると、注目すべき点がいくつかあります:
- ワークアラウンドなしのクロスプラットフォーム対応。Goのおかげで、エンジンはWindows、Linux(ARM64アーキテクチャを含む)、macOS(IntelとApple Siliconの両方)にコンパイルでき、Docker経由でAndroid用のAPKとしてビルドすることもできます。
- ネットワークコード。元のM.U.G.E.Nでは、マルチプレイヤーは欠落機能か、疑わしいサードパーティーソフトウェアが必要でした。ここでは、ネットワークモードがアーキテクチャに組み込まれています。
- 柔軟なデバッグ。エンジンの内部を詳しく調べたい場合、VS CodeやGoLandで数分でデバッグモードで起動できます。
- MITライセンス。エンジンコードは完全にオープンです。FFmpegライブラリ(動的にリンクされている)とデフォルトのインターフェースグラフィックスアセット(CC-BY 3で配布)にのみニュアンスがあります。
起動とビルドの仕組み
一般的なユーザーにとっては、すべてが非常にシンプルです。リリースセクションには готовые バイナリが用意されています。アーカイブをダウンロードし、展開し、システムに応じて実行ファイルを実行するだけです。
エンジン自体を修正したり、コードを探索する予定がある場合は、手順が少し異なります。
まず、リポジトリをクローンします:
ローカルで実行するには、単一のGoソースビルドでは不十分です—エンジンには基本的なインターフェースリソース(スプライト、サウンド、メニュー)が必要です。これらは隣接するリポジトリから取得され、プロジェクトのルートディレクトリに直接展開されます。
その後、IDEからデバッグを起動したり、ターゲットプラットフォーム用のバイナリをビルドしたりできます。Android用のビルドには、作者が готовые Dockerコンテナを用意しているので、ローカルNDKの設定に苦しむ必要はありません。
開発者がこのコードを見るべき理由
Ikemen GOの使用シナリオは2つあります。
1つ目—格闘ゲームが好きで、自分で作りたい場合。衝突 физики、判定ボックス処理、スプライト読み込み、ネットワークスタックをゼロから書くのは、何年もかかるタスクです。Ikemen GO готовую フレームワークとして使用する方がはるかに効率的です。エンジンを 가져오고、Luaスクリプトを設定し、キャラクターを描画すれば、完成品が手に入ります。
2つ目のシナリオ—Goでの複雑なシステムのアーキテクチャを学ぶこと。社区では、Goは通常マイクロサービス、REST API、gRPC、CLIユーティリティに関連付けられています。Ikemen GOは言語のまったく異なる側面を示します:
- 最小遅延でゲームループと入力処理を整理する方法。
- CgoとFFmpegでマルチメディアとやり取りする方法。
- UnityやGodotのような重いサードパーティーエンジンを使用せずに、大規模なゲームプロジェクトを構成する方法。
まとめ
Ikemen GOは、オープンソースが放棄されたテクノロジーに第二の人生を与える素晴らしい例です。プロジェクトはアクティブで、PRは受け入れられ、リポジトリでは常に作業が進行しています。
学研究するための異質なオープンソースGoプロジェクトを探している場合や、独自のレンダラーを書くことなく理想の格闘ゲームを作りたい場合は、ぜひリポジトリを覗いてみてください。探索的最佳のポイント是他们のWikiで、元のM.U.G.E.Nには存在しなかったすべての新機能が詳しく説明されています。
関連プロジェクト