mods 解説・導入方法|おすすめMODまとめ
Mods は Mindustry に新しいブロック、アイテム、液体、ユニット、セクター、惑星、スクリプト用フックなどのコンテンツと挙動を追加・変更し、コミュニティ製のゲームプレイ、ビジュアル、マップを可能にします。このページは、mods がどのように構成され、一般的に何を含み、どうやってアクセスまたは開発するか、そして使用上の実用的なヒントを要約したものです。
モッドが含められるもの
- 新しいブロック(壁、防御塔、工場、発電ブロック、コンベア、特殊用途ブロック)。コミュニティ例で示される型としては、カスタム壁、ウォールタイル、ディフェンスブロックなどがあります。
- 新しいアイテムと液体(資源、燃料、カスタム液体のような流体)。
- 新しい弾丸/弾薬タイプとタレットの弾薬マッピング(弾丸を追加またはコピーしてタレットに割り当てることができます)。
- 新しいユニットとユニット工場。
- 新しい惑星、セクター、およびセクター生成器(手続き生成セクターを置換または拡張する隠しセクターやコミュニティ製セクターを含む)。
- ブロック用のビジュアル資産と描画レイヤー(regions、shadows、追加の描画レイヤー)。
- カスタム挙動のためのスクリプティング、ハンドラ、プロセッサ(Java/JavaScript コンテンツ解析を含む)。
- モッド側のオーバーライドやリンクブロック挙動で、アイテム・液体・電力の取り扱いを他のタイルに転送するもの。
一般的な技術パターンと API
- コンテンツ拡張: Mods は一般的に基底クラスを拡張して新しいコンテンツを作成します(例: Wall を拡張してカスタム壁を作る、または GenericCrafter を使って工場を作る)。コンテンツ作成時はコンストラクタで name、description、solid のようなフラグを設定します。
- 既存コンテンツのコピーと修正: 弾丸、弾薬タイプ、ブロックをコピーしてフィールド(damage、visuals、requirements など)を変更し登録することで、元のコンテンツを変更せずに済ませることができます。
- アイテム/液体の受け入れと取り扱い: ブロックは acceptItem/handleItem や acceptLiquid/handleLiquid をオーバーライドしてリンクされたタイルへ委譲したり、カスタムのルーティングロジックを実装できます。電力フックは同様に addPower 呼び出しをリンクタイルに委譲できます。
- 描画とレイヤー: ブロックは regions を定義し、追加の描画レイヤー(layer2)やカスタムの shadow region を指定してビジュアルを調整できます。
- ビルド表示と要件: ブロックには buildVisibility、requirements、buildTime、size フィールドが含まれ、いつ/どのように表示され、どのように構築されるかを制御します。
セクター、惑星、マップコンテンツ
- Mods は完全なセクターや惑星を追加できます。コミュニティ作成の「隠し」攻撃マップは一部の modded キャンペーンで使われ、シード内の手続き生成セクターを置き換えます。作者は資源や防衛に関する注記(例: 豊富な
地雷、終盤の防衛に
プラスタニウム/
フェーズファイバーの壁 があるなど)を付けることが多いです。
- 惑星はテスト時にコンソールフラグでアクセス可能または表示可能にできます(例: Planets.
.accessible = Planets. .alwaysUnlocked = true)。
モッド開発: 言語とツール
- Java と JavaScript はモッド作成でサポートされています。モッダーのワークフローはコアの変更に Java を使ったり、ContentParser スタイルのスクリプトで JSON ライクなコンテンツを作成したりします。
- 必須のモッド資産: items、liquids、blocks、units、bullets、planets/sectors の定義とローカライズバンドル(name/description)が典型的です。
- 初心者は最初から作り直すのではなく、例示コンテンツ(壁、タレット、弾丸)をコピーして編集することから始めるべきです。
- 学ぶと役立つモッディング分野: items & liquids、factories (GenericCrafter)、生産/電力ブロック、タレット描画パーツ、エフェクト/サウンド/ステータス、units/weapons/abilities、planets/sectors/generation、およびゲームコード内のクラス/フィールドの探索。
- ツールとフロー: 多くのモッダーは Java と JavaScript(JavaJS)を往復し、適切なときにコミュニティツール(ACD、ContentParser)を使用します。
モッドのインストールとアクセス
- Android では公式リリースと
ベータビルドが Google Play 経由で入手可能です(最新ビルドを入手するにはベータテスターになる)。iOS のテストビルドは TestFlight 経由で配布されます。
- 一部のモッドコンテンツや隠しアイテム/惑星はデベロッパーコンソール(F8 を押す)で惑星やオブジェクトの表示フラグを true にすることで解除または表示可能にできます。
- 公式モッドコンテンツ: 一部のモッドは開発者によって作成されコミュニティ内で「公式モッド」として配布されることがあり、これらはモッドリストに表示されますが動作はコミュニティモッドと同様です。
例スニペットとパターン
- 既存タレットの弾薬テーブルにカスタム弾丸を割り当てる(JavaScript スタイル):
- 例: ブロック.duo.ammoTypes.put(Items.pyratite, ブロック.hail.ammoTypes.get(Items.pyratite))
- 弾丸をコピーしてプロパティを変更する:
- 例のパターン: bullet = ブロック.hail.ammoTypes.get(Items.graphite).copy(); bullet.damage = 200; ブロック.hail.ammoTypes.put(Items.titanium, bullet)
- 最小限のカスタム壁定義(JavaScript ライク):
- 例のパターンでは、Wall を拡張するときに region、health、category、size、requirements、buildTime、icons、および description を設定する方法を示します。
ベストプラクティスとコミュニティの慣習
- 可能な限り既存コンテンツを再利用・コピーして、ゲームバランスやビジュアルとの互換性を保ちます。
- ローカライズキーは Bundles(block.[name].name と block.[name].description)に保持して翻訳をサポートします。
- リリース前にコンソールの表示フラグで新しいセクターや惑星をテストします。
- Java でコーディングできるならバグの issue レポートや pull request で貢献してください。翻訳、議論、フィードバックのためにコミュニティチャネルに参加しましょう。
- 複雑なリンクブロックを作成する際は、オーバーライドしたメソッドが accept/handle 関数や電力ルーティングを適切にリンクタイルへ委譲することを確認し、供給チェーンの破損を避けてください。
モッドが使われる場所
- Mods はカスタムサバイバルマップ、コミュニティ製の攻撃セクター、新しいキャンペーンコンテンツ、およびクリエイター向けの利便性向上ツールを動かします。
- 一部の公式およびコミュニティモッドはアドオンとしてパッケージ化され、モッドブラウザや外部ホスティングを通じて配布されます。
このガイドは、Mindustry mods を使用または作成するときに遭遇する一般的な構造とワークフロー、つまりコンテンツ拡張、アセットと挙動のオーバーライド、セクター/惑星の追加、テストと配布の実用的手順をカバーしています。