>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 ブロックチェーン 組み込み セキュリティ
Go

ファンがMUGEN 格闘ゲームエンジンをGoで書き直した方法

2000年代に育った人なら、きっとM.U.G.E.N現象を覚えているでしょう。2D 格闘ゲーム作成ツールで、ナルトがモータルコンバットのステージ上でシェrekと戦えました。ファンコミュニティは数千ものキャラクターやステージを作成しましたが、エンジン自体はいつしか博物館の展示物のようになりました。クローズドソースコード、x86とWindowsへの依存、適切なオンラインプレイの欠如—すべてがダイヤルアップ時代のまま停滞していました。

ある時点で、開発者たちの忍耐が限界を迎えました。それがIkemen GOプロジェクトの始まりです—古いアセットを最新のハードウェアで動作させるGoで書かれたオープンソースのエンジンです。

IKEMEN GO Logo

このプロジェクトとは何か、名前はどこから来たのか

最初は、プロジェクトは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には存在しなかったすべての新機能が詳しく説明されています。

関連プロジェクト