Chapter 4.5: DayZ Toolsワークフロー
ホーム | << 前: Audio | DayZ Tools | 次: PBOパッキング >>
はじめに
DayZ Toolsは、Bohemia Interactiveがモッダー向けに提供する、Steamで配布されている無料の開発アプリケーション群です。3Dモデルエディタ、テクスチャビューア、テレインエディタ、スクリプトデバッガ、そして人間が読めるソースファイルを最適化されたゲーム対応フォーマットに変換するバイナリ化パイプラインなど、ゲームアセットの作成、変換、パッケージングに必要なすべてが含まれています。DayZのModは、少なくともこれらのツールとの何らかのやり取りなしには作成できません。
この章では、ツールスイートの各ツールの概要、ワークフロー全体を支えるP:ドライブ(ワークドライブ)システムの説明、高速な開発イテレーションのためのファイルパッチング、そしてソースファイルからプレイ可能なModまでの完全なアセットパイプラインについて解説します。
目次
- DayZ Tools スイート概要
- インストールとセットアップ
- P: ドライブ(ワークドライブ)
- Object Builder
- TexView2
- Terrain Builder
- Binarize
- AddonBuilder
- Workbench
- ファイルパッチングモード
- 完全なワークフロー:ソースからゲームまで
- よくある間違い
- ベストプラクティス
DayZ Tools スイート概要
DayZ Toolsは、SteamのToolsカテゴリから無料でダウンロードできます。Moddingパイプラインでそれぞれ特定の役割を持つアプリケーション群がインストールされます。
| ツール | 目的 | 主なユーザー |
|---|---|---|
| Object Builder | 3Dモデルの作成と編集(.p3d) | 3Dアーティスト、モデラー |
| TexView2 | テクスチャの表示と変換(.paa、.tga、.png) | テクスチャアーティスト、全モッダー |
| Terrain Builder | テレイン/マップの作成と編集 | マップ制作者 |
| Binarize | ソースからゲームフォーマットへの変換 | ビルドパイプライン(通常は自動化) |
| AddonBuilder | オプションのバイナリ化付きPBOパッキング | 全モッダー |
| Workbench | スクリプトのデバッグ、テスト、プロファイリング | スクリプター |
| DayZ Tools Launcher | ツール起動とP:ドライブ設定の中央ハブ | 全モッダー |
ディスク上の配置場所
Steamインストール後、ツールは通常以下の場所に配置されます:
C:\Program Files (x86)\Steam\steamapps\common\DayZ Tools\
Bin\
AddonBuilder\
AddonBuilder.exe <-- PBOパッカー
Binarize\
Binarize.exe <-- アセットコンバーター
TexView2\
TexView2.exe <-- テクスチャツール
ObjectBuilder\
ObjectBuilder.exe <-- 3Dモデルエディタ
Workbench\
workbenchApp.exe <-- スクリプトデバッガ
TerrainBuilder\
TerrainBuilder.exe <-- テレインエディタインストールとセットアップ
ステップ1:SteamからDayZ Toolsをインストールする
- Steamライブラリを開きます。
- ドロップダウンでToolsフィルタを有効にします。
- 「DayZ Tools」を検索します。
- インストールします(無料、約2 GB)。
ステップ2:DayZ Toolsを起動する
- Steamから「DayZ Tools」を起動します。
- DayZ Tools Launcher(中央ハブアプリケーション)が開きます。
- ここから各ツールの起動や設定の構成ができます。
ステップ3:P:ドライブを設定する
ランチャーにはP:ドライブ(ワークドライブ)を作成してマウントするボタンがあります。これは、すべてのDayZツールがルートパスとして使用する仮想ドライブです。
- Setup Workdrive(またはP:ドライブ設定ボタン)をクリックします。
- ツールが実際のディスク上のディレクトリを指すsubstマップされたP:ドライブを作成します。
- バニラDayZデータをP:に展開またはシンボリックリンクして、ツールがゲームアセットを参照できるようにします。
P: ドライブ(ワークドライブ)
P:ドライブは、すべてのDayZ Moddingの統一ルートパスとして機能するWindows仮想ドライブ(substまたはジャンクションで作成)です。P3Dモデル、RVMATマテリアル、config.cpp参照、ビルドスクリプトのすべてのパスはP:を基準としています。
P:ドライブが存在する理由
DayZのアセットパイプラインは、固定ルートパスを中心に設計されています。マテリアルがMyMod\data\texture_co.paaを参照する場合、エンジンはP:\MyMod\data\texture_co.paaを探します。この規約により以下が保証されます:
- すべてのツールがファイルの場所について一致します。
- パックされたPBO内のパスが開発時のパスと一致します。
- 複数のModが1つのルート下で共存できます。
構造
P:\
DZ\ <-- バニラDayZ展開データ
characters\
weapons\
data\
...
DayZ Tools\ <-- ツールインストール(またはシンボリックリンク)
MyMod\ <-- あなたのModソース
config.cpp
Scripts\
data\
AnotherMod\ <-- 別のModのソース
...SetupWorkdrive.bat
多くのModプロジェクトには、P:ドライブの作成とジャンクション設定を自動化するSetupWorkdrive.batスクリプトが含まれています。一般的なスクリプト:
@echo off
REM ワークスペースを指すP:ドライブを作成
subst P: "D:\DayZModding"
REM バニラゲームデータのジャンクションを作成
mklink /J "P:\DZ" "C:\Program Files (x86)\Steam\steamapps\common\DayZ\dta"
REM ツールのジャンクションを作成
mklink /J "P:\DayZ Tools" "C:\Program Files (x86)\Steam\steamapps\common\DayZ Tools"
echo ワークドライブ P: が設定されました。
pauseヒント: DayZツールを起動する前にワークドライブがマウントされている必要があります。Object BuilderやBinarizeがファイルを見つけられない場合、最初に確認すべきはP:がマウントされているかどうかです。
Object Builder
Object BuilderはP3Dファイル用の3Dモデルエディタです。詳細はChapter 4.2: 3Dモデルで扱います。ここではツールチェーンにおける役割の概要を説明します。
主な機能
- P3Dモデルファイルの作成と編集。
- ビジュアル、コリジョン、シャドウメッシュ用のLOD(Level of Detail)の定義。
- マテリアル(RVMAT)とテクスチャ(PAA)のモデル面への割り当て。
- アニメーションやテクスチャスワップ用のネームドセレクションの作成。
- メモリポイントとプロキシオブジェクトの配置。
- FBX、OBJ、3DSフォーマットからのジオメトリのインポート。
- エンジン互換性のためのモデルバリデーション。
起動
DayZ Tools Launcher --> Object Builderまたは直接起動:P:\DayZ Tools\Bin\ObjectBuilder\ObjectBuilder.exe
他のツールとの連携
- テクスチャプレビューにTexView2を参照します(フェイスプロパティでテクスチャをダブルクリック)。
- BinarizeとAddonBuilderが使用するP3Dファイルを出力します。
- 参照用にP:ドライブのバニラデータからP3Dファイルを読み込みます。
TexView2
TexView2はテクスチャの表示と変換のユーティリティです。DayZ Moddingに必要なすべてのテクスチャフォーマット変換を処理します。
主な機能
- PAA、TGA、PNG、EDDS、DDSファイルの表示とプレビュー。
- フォーマット間の変換(TGA/PNGからPAA、PAAからTGAなど)。
- 個別チャンネル(R、G、B、A)の個別表示。
- ミップマップレベルの表示。
- テクスチャの寸法と圧縮タイプの表示。
- コマンドラインによるバッチ変換。
起動
DayZ Tools Launcher --> TexView2または直接起動:P:\DayZ Tools\Bin\TexView2\TexView2.exe
一般的な操作
TGAからPAAへの変換:
- File --> Open --> TGAファイルを選択します。
- 画像が正しく表示されていることを確認します。
- File --> Save As --> PAAフォーマットを選択します。
- 圧縮方式を選択します(不透明にはDXT1、アルファにはDXT5)。
- 保存します。
バニラPAAテクスチャの検査:
- File --> Open -->
P:\DZ\...を参照してPAAファイルを選択します。 - 画像を表示します。チャンネルボタン(R、G、B、A)をクリックして個別チャンネルを検査します。
- ステータスバーに表示される寸法と圧縮タイプを確認します。
コマンドライン変換:
TexView2.exe -i "P:\MyMod\data\texture_co.tga" -o "P:\MyMod\data\texture_co.paa"Terrain Builder
Terrain Builderはカスタムマップ(テレイン)を作成するための専用ツールです。マップ作成は、衛星画像、ハイトマップ、サーフェスマスク、オブジェクト配置を伴う、DayZで最も複雑なModding作業の1つです。
主な機能
- 衛星画像とハイトマップのインポート。
- テレインレイヤー(草、土、岩、砂など)の定義。
- マップ上へのオブジェクト(建物、木、岩)の配置。
- サーフェステクスチャとマテリアルの設定。
- Binarize用のテレインデータのエクスポート。
Terrain Builderが必要な場合
- ゼロから新しいマップを作成する場合。
- 既存のテレインを変更する場合(オブジェクトの追加/削除、テレインの形状変更)。
- Terrain Builderは、アイテムMod、武器Mod、UI Mod、スクリプトのみのModには不要です。
起動
DayZ Tools Launcher --> Terrain Builder注意: テレイン作成は、専用のガイドが必要な上級トピックです。この章ではツール概要の一部としてのみTerrain Builderを扱います。
Binarize
Binarizeは、人間が読めるソースファイルを最適化されたゲーム対応バイナリフォーマットに変換するコアエンジンです。PBOパッキング時にバックグラウンドで実行されますが(AddonBuilder経由)、直接呼び出すこともできます。
Binarizeが変換するもの
| ソースフォーマット | 出力フォーマット | 説明 |
|---|---|---|
MLOD .p3d | ODOL .p3d | 最適化された3Dモデル |
.tga / .png / .edds | .paa | 圧縮テクスチャ |
.cpp(config) | .bin | バイナリ化されたconfig(高速パース) |
.rvmat | .rvmat(処理済み) | パスが解決されたマテリアル |
.wrp | .wrp(最適化済み) | テレインワールド |
バイナリ化が必要な場合
| コンテンツタイプ | バイナリ化? | 理由 |
|---|---|---|
| CfgVehicles付きConfig.cpp | はい | エンジンはアイテム定義にバイナリ化されたconfigを必要とします |
| Config.cpp(スクリプトのみ) | オプション | スクリプトのみのconfigはバイナリ化なしで動作します |
| P3Dモデル | はい | ODOLは読み込みが速く、サイズが小さく、エンジンに最適化されています |
| テクスチャ(TGA/PNG) | はい | ランタイムにはPAAが必要です |
| スクリプト(.cファイル) | いいえ | スクリプトはそのまま(テキストとして)読み込まれます |
| オーディオ(.ogg) | いいえ | OGGはすでにゲーム対応です |
| レイアウト(.layout) | いいえ | そのまま読み込まれます |
直接呼び出し
Binarize.exe -targetPath="P:\build\MyMod" -sourcePath="P:\MyMod" -noLogs実際には、Binarizeを直接呼び出すことはほとんどありません。AddonBuilderがPBOパッキングプロセスの一部としてBinarizeをラップしています。
AddonBuilder
AddonBuilderはPBOパッキングツールです。ソースディレクトリを受け取り、オプションでコンテンツに対してBinarizeを実行してから.pboアーカイブを作成します。詳細はChapter 4.6: PBOパッキングで扱います。
クイックリファレンス
# バイナリ化付きパック(config、モデル、テクスチャを持つアイテム/武器Mod用)
AddonBuilder.exe "P:\MyMod" "P:\output" -prefix="MyMod" -sign="MyKey"
# バイナリ化なしパック(スクリプトのみのMod用)
AddonBuilder.exe "P:\MyMod" "P:\output" -prefix="MyMod" -packonly起動
DayZ Tools Launcherから、または直接起動:
P:\DayZ Tools\Bin\AddonBuilder\AddonBuilder.exeAddonBuilderにはGUIモードとコマンドラインモードの両方があります。GUIはビジュアルファイルブラウザとオプションチェックボックスを提供します。コマンドラインモードは自動化ビルドスクリプトで使用されます。
Workbench
Workbenchは、DayZ Toolsに含まれるスクリプト開発環境です。スクリプトの編集、デバッグ、プロファイリング機能を提供します。
主な機能
- Enforce Scriptのシンタックスハイライト付きスクリプト編集。
- ブレークポイント、ステップ実行、変数検査によるデバッグ。
- スクリプトのパフォーマンスボトルネックを特定するプロファイリング。
- 式の評価とスニペットのテスト用コンソール。
- ゲームデータ検査用リソースブラウザ。
起動
DayZ Tools Launcher --> Workbenchまたは直接起動:P:\DayZ Tools\Bin\Workbench\workbenchApp.exe
デバッグワークフロー
- Workbenchを開きます。
- Modのスクリプトを指すようにプロジェクトを設定します。
.cファイルにブレークポイントを設定します。- Workbenchからゲームを起動します(DayZがデバッグモードで起動します)。
- 実行がブレークポイントに達すると、Workbenchはゲームを一時停止し、コールスタック、ローカル変数を表示し、ステップ実行を可能にします。
制限事項
- WorkbenchのEnforce Scriptサポートにはいくつかの欠落があります。オートコンプリートですべてのエンジンAPIが完全にドキュメント化されているわけではありません。
- 一部のモッダーは、コード作成には外部エディタ(VS CodeとコミュニティEnforce Script拡張機能)を好み、デバッグにのみWorkbenchを使用します。
- Workbenchは大規模なModや複雑なブレークポイント設定で不安定になることがあります。
ファイルパッチングモード
ファイルパッチングは、PBOにパッケージングすることなく、ディスクからルーズファイルをゲームに読み込ませる開発用ショートカットです。これにより、開発中のイテレーションが劇的に高速化されます。
ファイルパッチングの仕組み
DayZが-filePatchingパラメータ付きで起動されると、エンジンはPBOを確認する前にP:ドライブのファイルをチェックします。ファイルがP:上に存在する場合、PBOバージョンの代わりにルーズバージョンが読み込まれます。
通常モード: ゲーム読み込み --> PBO --> ファイル
ファイルパッチング: ゲーム読み込み --> P: ドライブ(ファイルが存在する場合) --> PBO(フォールバック)ファイルパッチングの有効化
DayZに-filePatching起動パラメータを追加します:
# クライアント
DayZDiag_x64.exe -filePatching -mod="MyMod" -connect=127.0.0.1
# サーバー
DayZDiag_x64.exe -filePatching -server -mod="MyMod" -config=serverDZ.cfg重要: ファイルパッチングには、リテール版実行ファイルではなく、Diag(診断)実行ファイル(
DayZDiag_x64.exe)が必要です。リテール版ビルドはセキュリティのため-filePatchingを無視します。
ファイルパッチングでできること
| アセットタイプ | ファイルパッチング可能? | 備考 |
|---|---|---|
| スクリプト(.c) | はい | 最速のイテレーション -- 編集、再起動、テスト |
| レイアウト(.layout) | はい | リビルドなしでUI変更 |
| テクスチャ(.paa) | はい | リビルドなしでテクスチャスワップ |
| Config.cpp | 部分的 | バイナリ化されていないconfigのみ |
| モデル(.p3d) | はい | バイナリ化されていないMLOD P3Dのみ |
| オーディオ(.ogg) | はい | リビルドなしでサウンドスワップ |
ファイルパッチングによるワークフロー
- Modのソースファイルを含むP:ドライブをセットアップします。
-filePatching付きでサーバーとクライアントを起動します。- エディタでスクリプトファイルを編集します。
- ゲームを再起動(または再接続)して変更を反映します。
- PBOのリビルドは不要です。
ヒント: スクリプトのみの変更の場合、ファイルパッチングによりビルドステップが完全に不要になります。
.cファイルを編集し、再起動してテストするだけです。これが利用可能な最速の開発ループです。
制限事項
- バイナリ化されたコンテンツは不可。
CfgVehiclesエントリを含むConfig.cppは、バイナリ化なしでは正しく動作しない場合があります。スクリプトのみのconfigは問題ありません。 - キー署名なし。 ファイルパッチされたコンテンツは署名されないため、開発時のみ使用可能です(公開サーバーでは不可)。
- Diagビルドのみ。 リテール版実行ファイルはファイルパッチングを無視します。
- P:ドライブがマウントされている必要あり。 ワークドライブがマウントされていない場合、ファイルパッチングは読み込むものがありません。
完全なワークフロー:ソースからゲームまで
以下は、ソースアセットをプレイ可能なModに変換するためのエンドツーエンドパイプラインです:
フェーズ1:ソースアセットの作成
3Dソフトウェア(Blender/3dsMax) --> FBXエクスポート
画像エディタ(Photoshop/GIMP) --> TGA/PNGエクスポート
オーディオエディタ(Audacity) --> OGGエクスポート
テキストエディタ(VS Code) --> .cスクリプト、config.cpp、.layoutファイルフェーズ2:インポートと変換
FBX --> Object Builder --> P3D(LOD、セレクション、マテリアル付き)
TGA --> TexView2 --> PAA(圧縮テクスチャ)
PNG --> TexView2 --> PAA(圧縮テクスチャ)
OGG --> (変換不要、ゲーム対応)フェーズ3:P:ドライブ上の整理
P:\MyMod\
config.cpp <-- Mod設定
Scripts\
3_Game\ <-- 早期読み込みスクリプト
4_World\ <-- エンティティ/マネージャースクリプト
5_Mission\ <-- UI/ミッションスクリプト
data\
models\
my_item.p3d <-- 3Dモデル
textures\
my_item_co.paa <-- ディフューズテクスチャ
my_item_nohq.paa <-- ノーマルマップ
my_item_smdi.paa <-- スペキュラーマップ
materials\
my_item.rvmat <-- マテリアル定義
sound\
my_sound.ogg <-- オーディオファイル
GUI\
layouts\
my_panel.layout <-- UIレイアウトフェーズ4:ファイルパッチングでテスト(開発)
DayZDiagを-filePatching付きで起動
|
|--> エンジンがP:\MyMod\からルーズファイルを読み込み
|--> ゲーム内でテスト
|--> P:上のファイルを直接編集
|--> 再起動して変更を反映
|--> 高速イテレーションフェーズ5:PBOパック(リリース)
AddonBuilder / ビルドスクリプト
|
|--> P:\MyMod\からソースを読み込み
|--> Binarizeで変換:P3D-->ODOL、TGA-->PAA、config.cpp-->.bin
|--> すべてをMyMod.pboにパック
|--> キーで署名:MyMod.pbo.MyKey.bisign
|--> 出力:@MyMod\addons\MyMod.pboフェーズ6:配布
@MyMod\
addons\
MyMod.pbo <-- パックされたMod
MyMod.pbo.MyKey.bisign <-- サーバー検証用の署名
keys\
MyKey.bikey <-- サーバー管理者用の公開鍵
mod.cpp <-- Modメタデータ(名前、作者など)プレイヤーはSteam WorkshopでModをサブスクライブするか、サーバー管理者が手動でインストールします。
よくある間違い
1. P:ドライブがマウントされていない
症状: すべてのツールが「file not found」エラーを報告します。Object Builderが空白のテクスチャを表示します。 修正: ツールを起動する前にSetupWorkdrive.batを実行するか、DayZ Tools LauncherでP:をマウントしてください。
2. 間違ったツールの使用
症状: PAAファイルをテキストエディタで編集しようとしたり、P3DをNotepadで開こうとしたりしている。 修正: PAAはバイナリです -- TexView2を使用してください。P3Dはバイナリです -- Object Builderを使用してください。Config.cppはテキストです -- 任意のテキストエディタを使用してください。
3. バニラデータの展開を忘れている
症状: Object Builderが参照モデルのバニラテクスチャを表示できない。マテリアルがピンク/マゼンタで表示される。 修正: バニラDayZデータをP:\DZ\に展開して、ツールがゲームコンテンツへのクロスリファレンスを解決できるようにしてください。
4. リテール版実行ファイルでのファイルパッチング
症状: P:ドライブ上のファイルへの変更がゲーム内に反映されない。 修正: DayZ_x64.exeではなくDayZDiag_x64.exeを使用してください。Diagビルドのみが-filePatchingをサポートします。
5. P:ドライブなしでのビルド
症状: AddonBuilderまたはBinarizeがパス解決エラーで失敗する。 修正: ビルドツールを実行する前にP:ドライブをマウントしてください。モデルとマテリアルのすべてのパスはP:相対です。
ベストプラクティス
常にP:ドライブを使用してください。 絶対パスを使用したい誘惑に抵抗してください。P:が標準であり、すべてのツールがそれを期待しています。
開発中はファイルパッチングを使用してください。 イテレーション時間が数分(PBOリビルド)から数秒(ゲーム再起動)に短縮されます。PBOのビルドはリリーステストと配布時のみに行ってください。
ビルドパイプラインを自動化してください。 スクリプト(
build_pbos.bat、dev.py)を使用してAddonBuilderの呼び出しを自動化してください。手動GUIパッキングはエラーが発生しやすく、マルチPBO Modでは遅くなります。ソースと出力を分離してください。 ソースファイルはP:に配置し、ビルドされたPBOは別の出力ディレクトリに配置します。両者を混在させないでください。
キーボードショートカットを学んでください。 Object BuilderとTexView2には、作業を劇的に高速化する豊富なキーボードショートカットがあります。それらを学ぶことに時間を投資してください。
バニラデータを展開して研究してください。 DayZアセットの構造を学ぶ最良の方法は、既存のものを調べることです。バニラPBOを展開し、適切なツールでモデル、マテリアル、テクスチャを開いてください。
デバッグにはWorkbenchを、コード作成には外部エディタを使用してください。 VS CodeとEnforce Script拡張機能はより良い編集体験を提供します。Workbenchはより良いデバッグ体験を提供します。両方を使用してください。
ナビゲーション
| 前 | 上 | 次 |
|---|---|---|
| 4.4 Audio | Part 4: ファイルフォーマットとDayZ Tools | 4.6 PBOパッキング |
