wotmod は Mod の新しいパッケージシステムです。 WoT 0.9.17.1 CT から導入されました。
以下はパッケージのドキュメント mod packages v.0.1.pdf を元にした解説です。 すでに古い内容になってるので最新版 ver.0.4 の日本語訳は https://wotmod.mtm-gaming.org/mod_packages/packages_doc_0.4_ja を参照してください。
wotmod とは
それぞれの mod のコンテンツ全体を単一のファイルにまとめて整理する枠組みです。
長所
これまで mod は WoT のインストールフォルダの下の /res_mods/XXX (XXX はクライアントのバージョン) に展開した状態で設置していましたが、 複数の mod を設置した場合に、どのファイルがどの mod に属しているのかを判別するのが困難になっていました。
新しい方式では、 mod は WoT のインストールフォルダの下の /mods/XXX 以下に展開せずに置くことになります。 異なる mod のコンテンツが混在しないので、mod のアンインストールが容易に、かつ正しく行えるようになります。
パッケージの仕組み
パッケージは非圧縮の zip ファイルで、拡張子を .wotmod としたものです。 圧縮された zip ファイルはサポートされていません。
パッケージ内の構成
- 必須: res フォルダ。これまで res_mods/XXX に置いていたファイルがこのフォルダに置かれます
- 推奨: meta.xml
- オプション: readme や URL などその他のコンテンツ
例:
res/scripts/client/gui/mods/mod_YYY.pyc meta.xml readme.txt
インストール方法
パッケージは WoT のインストールフォルダの /mods/XXX 以下にインストールします。 インストールはインストーラを使う方法、手動でコピーする方法のどちらでも可能です。
また、必要に応じて mod の種類や著者毎のサブフォルダにグループ化することもできます。
例:
mods/ └─0.9.17.0.2/ ├─MultiHitLog_2.8.wotmod └─DamagePanel/ ├─Some_common_library_3.14.5.wotmod ├─DamagePanel_2.6.wotmod ├─DamagePanel_2.8.wotmod └─DamagePanel_2.8_patch1.wotmod
meta.xml
オプションの meta.xml には mod に関する情報が記述されます。
<root> <id>DamagePanel</id> <version>0.2.8</version> <name>Damage Panel</name> <description>New cool Damage Panel with feature1.....N </description> </root>
これらのフィールドは今後、システムの制御情報として使用される予定です。
パッケージの読み込み順序
クライアント起動時に mods フォルダが走査、ソートされ、全パッケージが A から Z の順に読み込まれます。
必要に応じて、読み込み順序を操作することができます。 そのためには mods/XXX フォルダに load_order.txt を設置します。
load_order.txt は UTF8、CR+LF のプレーンテキストです。
例:
zzzz.wotmod bbbb.wotmod aaaa.wotmod
最初に load_order.txt で指定されたパッケージが指定された順に読み込まれ、 次に load_order.txt で指定されていないパッケージが標準の方法で読み込まれます。
パッケージの競合の解決
通常、異なる複数のファイルが res/ パッケージャ内の同じファイルに該当するという状況は許可されません。 こうした状況は競合状態とみなされます。 競合が発生すると、ユーザに競合が通知されるともに、パッケージは読み込みから完全に除外されます。
つまり、res/scripts/entities.xml が a.wotmod と b.wotmod の両方に含まれている場合、 a.wotmod が正常に読み込まれ、競合する b.wotmod は読み込まれません。
競合の処理は次の場合に制御できます:
- load_order.txt ファイル。このファイルで指定されているパッケージは競合とみなされず、読み込まれます。パッケージの挙動を理解した上で load_order.txt を設置したと想定しているためです。
- meta.xml のノード <id> の値。<id> が同一の場合、同じ mod の異なるバージョンまたはパッチとみなし、競合は判定されません。
異なるパッケージに同じ (同名の) ファイルが存在する場合には、
load_order.txt か meta.xml で競合を解決します。
その場合、優先順位が最後のパッケージからファイルが読み込まれることになります。