MODのデバッグ環境
MODのデバッグは非常に時間がかかりますが、
手助けになるツールがいくつかあります。
手助けになるツールがいくつかあります。
ここでは2種類のツールを紹介しますので、
MOD作成で行き詰った際にはぜひ試してみて下さい。
MOD作成で行き詰った際にはぜひ試してみて下さい。
ツール名 | 概要 |
UnityExplorer | BepInExのプラグインとして動作し、ゲーム内UIでデバッグ、変更を行えるツール |
Debugging plugins with Visual Studio | Visual StudioからUnityにアタッチし、ブレークポイントなどを使用したデバッグができる方法 |
UnityExplorer
MODを導入するのと同じ感覚で導入できます。
導入が簡単で、呼び出されるクラスの特定など様々な用途で使えるのでおすすめです。
導入が簡単で、呼び出されるクラスの特定など様々な用途で使えるのでおすすめです。
導入方法
GitのUnityExplorerリリースページから最新のUnityExplorer.BepInEx5.Mono.zipをダウンロードし、
zipのpluginsフォルダに入っているものを全て\BepInEx\pluginsにコピーしてください。
zipのpluginsフォルダに入っているものを全て\BepInEx\pluginsにコピーしてください。
//フォルダ構成
BepInEx
│
└─plugins
│
└─sinai-dev-UnityExplorer
UnityExplorer.BIE5.Mono.dll
UniverseLib.Mono.dll
使用方法
ゲーム内でF7で表示/非表示を切り替えることができます。
configフォルダに生成されるcom.sinai.unityexplorer.cfgのHide On Startupを変更することで、
起動時の表示/非表示を変更できます。
configフォルダに生成されるcom.sinai.unityexplorer.cfgのHide On Startupを変更することで、
起動時の表示/非表示を変更できます。
Debugging plugins with Visual Studio
導入は大変ですが、かなり便利です。
Visual Studio上でブレイクポイントを設定し、変数の中身を確認したりステップ実行したりできます。
Visual Studio上でブレイクポイントを設定し、変数の中身を確認したりステップ実行したりできます。
導入方法
導入は数ステップあります。
ここでは、Visual Studio Community 2022ベースで解説します。
ここでは、Visual Studio Community 2022ベースで解説します。
- Step1: クラフトピアをDevelopment Buildに変更する
- Step2: MODのビルド / mdbの生成 / MODの配置
- Step3: Visual Studio Tools for Unityの導入
導入方法 (Step1: クラフトピアをDevelopment Buildに変更する)
GitのdnSpy Wikiを参考に、クラフトピアをDevelopment Buildに変更します。
以下に2023/7/13現在で成功した方法を記載します。
以下に2023/7/13現在で成功した方法を記載します。
まず下記のファイルおよびフォルダを別の場所にコピーし、バックアップを取得します。
※後ほどこれらのファイルを上書きするため
※後ほどこれらのファイルを上書きするため
ディレクトリ | バックアップ対象 | |
① | C:\Program Files (x86)\Steam\steamapps\common\Craftopia | Craftopia.exe |
② | C:\Program Files (x86)\Steam\steamapps\common\Craftopia | UnityPlayer.dll |
③ | C:\Program Files (x86)\Steam\steamapps\common\Craftopia\Craftopia_Data | boot.config |
④ | C:\Program Files (x86)\Steam\steamapps\common\Craftopia\Craftopia_Data | Managed |
⑤ | C:\Program Files (x86)\Steam\steamapps\common\Craftopia\Craftopia_Data | Resources |
Craftopia.exeを作ったUnityのバージョンを特定します。
Craftopia.exeのプロパティを確認し、詳細→製品バージョンで確認できます。
今回は製品バージョンに「2021.3.15f1」と記載されていた場合を想定します。
Craftopia.exeのプロパティを確認し、詳細→製品バージョンで確認できます。
今回は製品バージョンに「2021.3.15f1」と記載されていた場合を想定します。
Unity download archiveから特定したバージョンのUnityをダウンロードおよびインストールします。
今回は「2021.3.15f1」の為、Unity 2021.3.15をインストールします。
今回は「2021.3.15f1」の為、Unity 2021.3.15をインストールします。
インストール後、下記のフォルダを開きます。
C:\Program Files\Unity\Hub\Editor\2021.3.15f1\Editor\Data\PlaybackEngines\windowsstandalonesupport\Variations\win64_player_development_mono
win64_player_development_mono内のファイルおよびフォルダで、
前段でバックアップを取得したディレクトリを上書きします。
前段でバックアップを取得したディレクトリを上書きします。
ファイルおよびフォルダ名 | 上書き場所 |
WindowsPlayer.exe | Craftopia.exeにリネームし、バックアップ対象①に上書き |
UnityPlayer.dll | バックアップ対象②に上書き |
\Data\Managed | バックアップ対象④に上書き |
\Data\Resources | バックアップ対象⑤に上書き |
boot.configをメモ帳で開き、下記の内容に書き換えます。
//C:\Program Files (x86)\Steam\steamapps\common\Craftopia\Craftopia_Data\boot.config
gfx-enable-gfx-jobs=1
gfx-enable-native-gfx-jobs=1
wait-for-native-debugger=0
hdr-display-enabled=0
gc-max-time-slice=3
player-connection-mode=Listen
player-connection-debug=1
player-connection-wait-timeout=-1
Steamからクラフトピアを起動し、右下にDevelopment Buildと表示されていたら完了です。
導入方法 (Step2: MODのビルド / mdbの生成 / MODの配置)
MODを「Debug構成」でビルドしてください。
プロジェクト名\bin\Debug フォルダににdll及びpdbが生成されていれば大丈夫です。
プロジェクト名\bin\Debug フォルダににdll及びpdbが生成されていれば大丈夫です。
dllが生成されたら、dllからmdbを生成します。
Gitのpdb2mdbリリースページから最新のzipをダウンロードして、
pdb2mdb.exeをわかりやすい場所へ移動させ、dllファイルをpdb2mdb.exeにドラッグ&ドロップしてください。
dllファイルと同じディレクトリにmdbが生成されます。
Gitのpdb2mdbリリースページから最新のzipをダウンロードして、
pdb2mdb.exeをわかりやすい場所へ移動させ、dllファイルをpdb2mdb.exeにドラッグ&ドロップしてください。
dllファイルと同じディレクトリにmdbが生成されます。
ここまで完了したら、普段通りdllファイルを\BepInEx\pluginsに配置します。
その際、pdbおよびmdbも同様にpluginsフォルダに配置してください。
dll、pdb、mdbが同じフォルダに存在することで、デバッグが可能になります。
その際、pdbおよびmdbも同様にpluginsフォルダに配置してください。
dll、pdb、mdbが同じフォルダに存在することで、デバッグが可能になります。
導入方法 (Step3: Visual Studio Tools for Unityの導入)
※Visual Studioで[デバッグ(D)] - [Unityデバッガーのアタッチ]が表示されていない場合に実施してください。
Visual Studio InstallerでVisual Studio Community 2022の変更を押し、
個別のコンポーネントタブからVisual Studio Tools for Unityを追加インストールしてください。
個別のコンポーネントタブからVisual Studio Tools for Unityを追加インストールしてください。
使用方法
起動中のDevelopment BuildのUnityアプリケーションに対し、
Visual Studioの[Unityデバッガーのアタッチ]を使用してアタッチすることでデバッグすることが可能です。
Visual Studioの[Unityデバッガーのアタッチ]を使用してアタッチすることでデバッグすることが可能です。
導入手順が完了している場合、Steamからクラフトピアを起動した後、
Visual Studioで[デバッグ(D)] - [Unityデバッガーのアタッチ]を実行することで、
クラフトピアとVisual Studioが接続されます。
Visual Studioで[デバッグ(D)] - [Unityデバッガーのアタッチ]を実行することで、
クラフトピアとVisual Studioが接続されます。
試しにブレイクポイントを設定して、
MODが動作する場面でブレイクポイント部分で中断できるか試してみるとよいでしょう。
MODが動作する場面でブレイクポイント部分で中断できるか試してみるとよいでしょう。
備考
シンボル(pdbおよびmdb)がちゃんと読み込めていない場合、
ブレイクポイントを設定しても「ブレイクポイントは、現在の設定ではヒットしません」と出てしまう場合があります。
もしブレイクポイントが作動しない場合は、[Unityデバッガーのアタッチ]を実行中に、
[デバッグ(D)] - [ウィンドウ(W)] - [モジュール]で自作モジュールのシンボル状態を確認してみてください。
ブレイクポイントを設定しても「ブレイクポイントは、現在の設定ではヒットしません」と出てしまう場合があります。
もしブレイクポイントが作動しない場合は、[Unityデバッガーのアタッチ]を実行中に、
[デバッグ(D)] - [ウィンドウ(W)] - [モジュール]で自作モジュールのシンボル状態を確認してみてください。
もしシンボルが読み込めていても上記エラーが出る場合は、
[デバッグ(D)] - [オプション(O)] のデバッグ全般から下記のチェックを外してみてください。
[デバッグ(D)] - [オプション(O)] のデバッグ全般から下記のチェックを外してみてください。
- マイ コードのみを有効にする
- 元のバージョンと完全に一致するソースファイルを必要とする