Learn · mappings

何ですか Minecraft マッピング?解説

Minecraft マッピングは、a.b.cのような難読化されたコードを、modsやクライアントが読みやすく理解し、フックできるような名前のテーブルです.

TRtrolPublished 1 min read

マインクラフトのマッピングとは?

マインクラフトのマッピングとは、ゲームの難読化されたシンボルと人間が読める名前を紐付ける翻訳テーブルです。リテール版には、クラス、メソッド、フィールドがabkc.d.eのような意味不明な短い文字列にリネームされて出荷されます。MCP、Yarn、またはMojangのマッピングのようなマッピングセットは、その混乱の上に実際の名前を重ねることで、開発者がコードを読み、そこにフックできるようになります。

マッピングがない場合、ゲームは技術的にはオープンですが、実質的には判読不能です。マッピングを適用すると、field_71090_bLとラベル付けされたフィールドがexperienceLevelのように読み取れるようになり、コードベース全体が突然通常のソフトウェアのように見えます。

なぜマインクラフトはマッピングが必要なのでしょうか?

マッピングは、MojangがMinecraftのリリースごとに難読化を行うために存在します。ビルドステップでは、すべてのクラスとメンバーが短いトークンに書き換えられます。これによりjarファイルがわずかに小さくなりますが、主にコードを理解しにくくします。これが、すべてのMODやクライアントが乗り越えなければならない壁です。

マッピングは、その壁の鍵です。それは一対一のリストです。左が難読化された名前、右が読み取り可能な名前です。これをゲーム全体に適用すると、スクランブルされたjarファイルが作業可能なソースツリーに戻ります.

話されることになる3つのマッピングセット

マッピングプロジェクトは数多く存在しますが、その中でも3つが主要な話題となっています。それぞれ異なる時代と異なる所有者に属しています。

MCP (Mod Coder Pack)

MCPは、1.14以前のモディフィケーションを可能にしたコミュニティマッピングです。これは2つのレイヤーで動作していました。Seargeプロジェクトが安定しているものの魅力的な名前ではない中間名(例:func_70071_h_)を生成し、MCPがそれらにフレンドリーな名前(例:onUpdate)を付与していました。多くの古い1.8.9スタンドアロンクライアントは、依然としてMCPマッピングされたツリーに対してコンパイルされ、MCPまたはSeargeの名前を反映させています。

Yarn

Yarnは、FabricMCによってFabricエコシステム向けに維持されているオープンソースのマッピングです。コミュニティによって書かれ、自由にライセンスされており、新しいMinecraftバージョンがリリースされると迅速にアップデートされる傾向があります。この迅速な対応こそが、Fabricのモッドが新しいバージョンを早期にリリースできる大きな理由の一つです。

Mojangのマッピング

Mojangのマッピング(しばしばMojmapと略される)は、1.14.4以降、すべてのリリースに添付されて公開されているMojang自身の公式の名前です。ソースから直接提供されるため、名前はMojangの開発者が実際に使用する名称と一致します。それらは、現代のクライアントにとってのデフォルトの出発点として、MCPとSeargeを事実上置き換えています。

MCP vs Yarn vs Mojangのマッピング

簡潔に言うと、MCPはレガシーのツールチェーン、Mojangのマッピングは公式の代替、そしてYarnはそれらの中間に位置し、多くのFabricプロジェクトで使用されているオープンなコミュニティセットです。重要な点において、これら3つを比較してみましょう。

MCPYarnMojangマッピング
メンテナンスコミュニティ (Searge + MCP)FabricMCMojang
時代1.14以前 (1.7から1.12)1.14以降1.14.4以降
起源コミュニティ由来コミュニティ由来最初の公式製品
典型的な用途レガシークライアント、古いモディングFabricFabric、Forge、NeoForge
状態Mojmapに取って代わられ、廃止稼働中アクティブなデフォルト

マッピングがモッドツールチェーンにどのように適合するか

マッピングはコンパイル時にのみ機能し、実行時には機能しません。ビルドツールは難読化されたゲームを取り、マッピングを適用して、開発者が記述できる読みやすいコピーを渡します。モッドが完成すると、ツールチェーンはそれを再度マッピングして、参照がプレイヤーの実際のjarに含まれる難読化された名前と一致するようにします。

ローダーはこれに異なるアプローチを取ります。Fabricはプロジェクトに応じてYarnまたはMojangマッピングされたベースに対してビルドします。Forgeは歴史的に作業を分割し、一方のマッピングを通してコードを読みながら、別のマッピングに対して実行していました。Mojangマッピングのライセンスはビルド時に使用できるほど寛容であるため、現在のほとんどのツールチェーンはこれに依存しています.

中間層:MODを安定させる層

知っておくべき名前が一つあります。中間層(Intermediary)は、Fabricが採用している安定した中間層で、コンパイルされたMODが、読みやすいマッピングが変更されても引き続き動作するようにしています。読みやすい名前(YarnやMojmap)は人間が利用するために上に配置され、中間層は実行中のゲームのためにその下に一定の状態で存在します。以前のMCPの世界では、Seargeが同様の役割を担っていました。その考え方は単純です。バイナリに対する固定層、開発者にとって使いやすい層。

よくある質問

Terminus を手に入れろ

Built to track Minecraft's mappings so its modules keep working across versions.