Chapter 9.10: MOD管理
ホーム | << 前へ: アクセス制御 | 次へ: トラブルシューティング >>
概要: DayZ専用サーバーにサードパーティMODをインストール、設定、保守します。起動パラメータ、Workshopダウンロード、署名キー、ロード順序、サーバー専用MODとクライアント必須MOD、アップデート、クラッシュやプレイヤーキックの原因となる最も一般的な間違いを解説します。
目次
- MODのロード方法
- 起動パラメータの形式
- Workshop MODのインストール
- MODキー (.bikey)
- ロード順序と依存関係
- サーバー専用MODとクライアント必須MOD
- MODのアップデート
- MOD競合のトラブルシューティング
- よくある間違い
MODのロード方法
DayZは -mod= 起動パラメータを通じてMODをロードします。各エントリはPBOファイルと config.cpp を含むフォルダへのパスです。エンジンは各MODフォルダ内のすべてのPBOを読み取り、クラスとスクリプトを登録してから、リスト内の次のMODに進みます。
サーバーとクライアントは -mod= で同じMODを持つ必要があります。サーバーが @CF;@MyMod をリストし、クライアントが @CF しか持っていない場合、署名の不一致で接続が失敗します。-servermod= に配置されたサーバー専用MODは例外です -- クライアントはそれらを必要としません。
起動パラメータの形式
典型的なMOD入りサーバーの起動コマンド:
DayZServer_x64.exe -config=serverDZ.cfg -port=2302 -profiles=profiles -mod=@CF;@VPPAdminTools;@MyContentMod -servermod=@MyServerLogic -dologs -adminlog| パラメータ | 目的 |
|---|---|
-mod= | サーバーとすべての接続クライアントの両方に必要なMOD |
-servermod= | サーバー専用MOD(クライアントには不要) |
ルール:
- パスは セミコロン区切り で、セミコロンの周囲にスペースなし
- 各パスはサーバールートディレクトリからの相対パスです(例:
@CFは<server_root>/@CF/を意味する) - 絶対パスも使用可能:
-mod=D:\Mods\@CF;D:\Mods\@VPP - 順序が重要 -- 依存関係はそれを必要とするMODの前に表示される必要があります
Workshop MODのインストール
ステップ1: MODのダウンロード
DayZ クライアント のApp ID(221100)とMODのWorkshop IDを使用してSteamCMDで実行します:
steamcmd.exe +force_install_dir "C:\DayZServer" +login your_username +workshop_download_item 221100 1559212036 +quitダウンロードされたファイルは以下に配置されます:
C:\DayZServer\steamapps\workshop\content\221100\1559212036\ステップ2: シンボリックリンクまたはコピーの作成
Workshopフォルダは数値IDを使用しており、-mod= では使用できません。名前付きシンボリックリンク(推奨)を作成するか、フォルダをコピーします:
mklink /J "C:\DayZServer\@CF" "C:\DayZServer\steamapps\workshop\content\221100\1559212036"ジャンクションを使用すると、SteamCMD経由のアップデートが自動的に適用されます -- 再コピーは不要です。
ステップ3: .bikeyのコピー
次のセクションを参照してください。
MODキー (.bikey)
すべての署名されたMODには、1つ以上の .bikey ファイルを含む keys/ フォルダが付属しています。これらのファイルは、BattlEyeにどのPBO署名を受け入れるかを伝えます。
- MODフォルダを開きます(例:
@CF/keys/) - すべての
.bikeyファイルをサーバーのルートkeys/ディレクトリにコピーします
DayZServer/
keys/
dayz.bikey # バニラ -- 常に存在
cf.bikey # @CF/keys/ からコピー
vpp_admintools.bikey # @VPPAdminTools/keys/ からコピー正しいキーがないと、そのMODを実行しているプレイヤーは: "Player kicked: Modified data" と表示されます。
ロード順序と依存関係
MODは -mod= パラメータ内で左から右にロードされます。MODの config.cpp は依存関係を宣言します:
class CfgPatches
{
class MyMod
{
requiredAddons[] = { "CF" };
};
};MyMod が CF を必要とする場合、@CF は起動パラメータで @MyMod の 前に 表示される必要があります:
-mod=@CF;@MyMod 正しい
-mod=@MyMod;@CF クラッシュまたはクラスの欠落一般的なロード順序パターン:
- フレームワークMOD -- CF, Community-Online-Tools
- ライブラリMOD -- BuilderItems, 共有アセットパック
- 機能MOD -- マップ追加、武器、車両
- 依存MOD -- 上記を
requiredAddonsとしてリストするもの
不明な場合は、MODのWorkshopページまたはドキュメントを確認してください。ほとんどのMOD作者は必要なロード順序を公開しています。
サーバー専用MODとクライアント必須MOD
| パラメータ | 誰に必要か | 典型的な例 |
|---|---|---|
-mod= | サーバー + すべてのクライアント | 武器、車両、マップ、UIモッド、衣服 |
-servermod= | サーバーのみ | エコノミーマネージャー、ロギングツール、管理バックエンド、スケジューラスクリプト |
ルールは明確です: MODに いずれかの クライアントサイドスクリプト、レイアウト、テクスチャ、モデルが含まれている場合、-mod= に入れる必要があります。サーバーサイドのロジックのみでクライアントが触れるアセットがない場合は、-servermod= を使用します。
サーバー専用MODを -mod= に入れると、すべてのプレイヤーにダウンロードを強制します。クライアント必須MODを -servermod= に入れると、クライアント側でテクスチャの欠落、UIの破損、またはスクリプトエラーが発生します。
MODのアップデート
手順
- サーバーを停止する -- サーバー実行中のファイル更新はPBOを破損させる可能性があります
- SteamCMD経由で再ダウンロード:batch
steamcmd.exe +force_install_dir "C:\DayZServer" +login your_username +workshop_download_item 221100 <modID> +quit - 更新された.bikeyファイルをコピー -- MOD作者は署名キーをローテーションすることがあります。常にMODの
keys/フォルダから最新の.bikeyをサーバーのkeys/ディレクトリにコピーしてください - サーバーを再起動する
シンボリックリンク(ジャンクション)を使用した場合、ステップ2でMODファイルがその場で更新されます。手動でファイルをコピーした場合は、再度コピーする必要があります。
クライアント側のアップデート
Steam WorkshopでMODにサブスクライブしているプレイヤーは、自動的にアップデートを受け取ります。サーバーのMODを更新してプレイヤーが古いバージョンを持っている場合、クライアントがアップデートされるまで署名の不一致で接続できません。
MOD競合のトラブルシューティング
RPTログの確認
profiles/ 内の最新の .RPT ファイルを開きます。以下を検索してください:
- "Cannot register" -- 2つのMOD間のクラス名の衝突
- "Missing addons" -- 依存関係がロードされていない(ロード順序の誤りまたはMODの欠落)
- "Signature verification failed" --
.bikeyの不一致または欠落キー
スクリプトログの確認
profiles/ 内の最新の script_*.log を開きます。以下を探してください:
- "SCRIPT (E)" 行 -- ロード順序またはバージョンの不一致によるスクリプトエラー
- "Definition of variable ... already exists" -- 2つのMODが同じクラスを定義している
問題の分離
多くのMODがあり何かが壊れた場合、段階的にテストしてください:
- フレームワークMODのみで開始(
@CF) - 一度に1つのMODを追加
- 各追加後に起動してログを確認
- エラーを引き起こすMODが原因です
2つのMODが同じクラスを編集している場合
2つのMODが両方とも modded class PlayerBase を使用する場合、最後に(-mod= で最も右に)ロードされたものが優先されます。その super 呼び出しは他のMODのバージョンにチェーンします。これは通常機能しますが、一方のMODが super を呼び出さずにメソッドをオーバーライドすると、他のMODの変更が失われます。
よくある間違い
ロード順序が間違っている。 依存関係がまだロードされていないため、サーバーがクラッシュするか「Missing addons」がログに記録されます。対処法: 依存関係MODを -mod= リスト内でより前に移動します。
サーバー専用MODに -servermod= を使い忘れる。 プレイヤーが不要なMODのダウンロードを強制されます。対処法: サーバー専用MODを -mod= から -servermod= に移動します。
MODアップデート後に .bikey ファイルを更新しない。 サーバーのキーがMODの新しいPBO署名と一致しないため、プレイヤーが「Modified data」でキックされます。対処法: MODを更新する際は常に .bikey ファイルを再コピーしてください。
MODのPBOを再パックする。 MODのPBOファイルを再パックすると、デジタル署名が壊れ、すべてのプレイヤーがBattlEyeキックされ、ほとんどのMOD作者の利用規約に違反します。自分が作成していないMODを再パックしないでください。
Workshopパスとローカルパスの混在。 一部のMODにはWorkshopの数値パスを使用し、他には名前付きフォルダを使用すると、アップデート時に混乱が生じます。1つのアプローチを選択してください -- シンボリックリンクが最もクリーンです。
MODパスのスペース。 -mod=@My Mod のようなパスはパースを壊します。スペースを避けるためにMODフォルダの名前を変更するか、パラメータ全体を引用符で囲んでください: -mod="@My Mod;@CF"。
サーバーのMODが古く、クライアントが更新済み(またはその逆)。 バージョンの不一致で接続できません。サーバーとWorkshopのバージョンを同期させてください。すべてのMODとサーバーを同時にアップデートしてください。
