- Intermediaryは、Minecraftの難読化されたコード上にFabricが提供する、安定した名前付けレイヤーです。
- それは、各難読化されたシンボルに固定された名前を与え、バージョン間でその名前が変わらないようにします。
- コンパイルされたFabricのModは、Intermediaryの名前に対して、読みやすい名前ではなく、出荷されます。
- アップデート時の破損を軽減しますが、削除されたゲームコードからModを完全に保護することはできません.
インターメディアリは、Minecraftの難読化されたコード上にFabric(https://fabricmc.net/)が構築する、安定した名前付けレイヤーです。Mojangは、クラス、フィールド、メソッドの名前をスクランブルした状態でゲームをリリースします。これらの名前はリリースごとに変更されますが、インターメディアリはそれぞれに固定された名前を割り当て、それがバージョン間で一貫性を保ちます。これにより、コンパイルされたMODは、ゲームのアップデート後でも、パッチを適用するコードを常に探し当てることができます.
どこ Opal 合う
中間マッピングとは何か
中間マッピングとは、一連のマッピング、つまり、隠蔽されたMinecraftのシンボルと、安定した機械生成された名前を紐づけるルックアップテーブルです。ゲームがaと呼ぶクラスは、中間マッピングではclass_1234となることがあります。その名前は醜いかもしれませんが、そのシンボルに対してリリース間で永続的です。
Mojangは、すべてのビルドでゲームを隠蔽します。field_5678のような名前は、そうでなければリリースごとに変化するため、生の隠蔽された名前に対してコンパイルされたModは、ゲームがアップデートされるとすぐに動作しなくなります。中間マッピングは、その名前を固定し、Modではなくマッピングが変化を吸収するようにします。
Fabric Modが必要とする理由
Modは、開発者が記述する読みやすい名前ではなく、中間マッピングの名前に対してコンパイルされて配布されます。この決定が、Fabric Modが、多くの場合は再コンパイルなしで新しいゲームビルド上で動作し続けることを可能にしています。
ゲームの起動時、Fabricは、そのバージョンのための中間マッピングをロードし、隠蔽されたゲームクラスをModが期待する安定した名前にリマップします。Modとゲームは、どちらも生で配布しない名前セットで互いに合流します。
中間マッピングと開発者マッピング
開発者はclass_1234を読んだり書いたりしません。YarnやMojmapのような、シンボルに説明的な名前を与える人間が読めるマッピングに対して作業します。ビルド時に、これらの読みやすい名前は配布のために中間マッピングにコンパイルされます.
| レイヤー | 例 | ユーザー | バージョン間で安定 |
|---|---|---|---|
| 難読化 | a, field_5678 | 手動では誰も | いいえ |
| 中間層 | class_1234 | 配信されたMODバイナリ | はい |
| Yarn / Mojmap | MinecraftClient | ビルド時の開発者 | 読みやすく、バージョン管理されている |
この仕組みにより、開発者はフレンドリーな名前でコードを書くことができ、実際に配信されるものはバージョン安定性を保つことができます。読みやすいマッピングは交換可能ですが、中間層は誰もが合意する共通の基盤です。
MODのライフサイクルにおける役割
- 開発者はYarnやMojmapのような読みやすいマッピングに対してコードを書きます。
- ビルドは、それらの名前を中間層の名前へと変換します。
- MODは、中間層のシンボルを参照するJARとして配信されます。
- 起動時に、Fabricは実行中のゲームの難読化された名前を中間層にリマップし、MODとゲームを一致させます。
これが、マッピングがFabricのMOD開発において静かで重要な役割を果たしている理由です。マッピングは、アップデート後もMODが正しいコードを指し示すための契約です。
よくある質問
いいえ。Yarnは、開発者がコードを書く際の参照先となる読み取り可能なマッピングです。インターメディエリーチャーンは、コンパイルされたMODが実際に配布する際の安定した、機械生成されたレイヤーです。Yarnの名前は、ビルド時にインターメディエリーチャーンにコンパイルされます。
それらは書かれるのではなく、生成されます。class_1234のような名前は、美しければ良いというわけではなく、一意で永続的であることが求められます。可読性は、YarnやMojmapによって上乗せされます。
いいえ。インターメディアは名前を安定させますが、Mojangがメソッドを削除または書き換えた場合、名前に関係なく、その下のコードは消えます。破損を減らすだけで、完全に無くすわけではありません。
特に必要はありません。Fabricの内部で自動的に動作します。開発者の方か、インターミディアリのシンボルが記載されたクラッシュログを読む場合にのみ遭遇するでしょう。