craftopiamodder @ ウィキ

MODのデバッグ環境

最終更新:

匿名ユーザー

- view
だれでも歓迎! 編集

MODのデバッグ環境


MODのデバッグは非常に時間がかかりますが、
手助けになるツールがいくつかあります。

ここでは2種類のツールを紹介しますので、
MOD作成で行き詰った際にはぜひ試してみて下さい。

ツール名 概要
UnityExplorer BepInExのプラグインとして動作し、ゲーム内UIでデバッグ、変更を行えるツール
Debugging plugins with Visual Studio Visual StudioからUnityにアタッチし、ブレークポイントなどを使用したデバッグができる方法






UnityExplorer


MODを導入するのと同じ感覚で導入できます。
導入が簡単で、呼び出されるクラスの特定など様々な用途で使えるのでおすすめです。

導入方法


GitのUnityExplorerリリースページから最新のUnityExplorer.BepInEx5.Mono.zipをダウンロードし、
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を変更することで、
起動時の表示/非表示を変更できます。






Debugging plugins with Visual Studio


導入は大変ですが、かなり便利です。
Visual Studio上でブレイクポイントを設定し、変数の中身を確認したりステップ実行したりできます。

導入方法


導入は数ステップあります。
ここでは、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現在で成功した方法を記載します。

まず下記のファイルおよびフォルダを別の場所にコピーし、バックアップを取得します。
※後ほどこれらのファイルを上書きするため
ディレクトリ バックアップ対象
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」と記載されていた場合を想定します。

Unity download archiveから特定したバージョンのUnityをダウンロードおよびインストールします。
今回は「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が生成されていれば大丈夫です。

dllが生成されたら、dllからmdbを生成します。
Gitのpdb2mdbリリースページから最新のzipをダウンロードして、
pdb2mdb.exeをわかりやすい場所へ移動させ、dllファイルをpdb2mdb.exeにドラッグ&ドロップしてください。
dllファイルと同じディレクトリにmdbが生成されます。

ここまで完了したら、普段通りdllファイルを\BepInEx\pluginsに配置します。
その際、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を追加インストールしてください。

使用方法

起動中のDevelopment BuildのUnityアプリケーションに対し、
Visual Studioの[Unityデバッガーのアタッチ]を使用してアタッチすることでデバッグすることが可能です。

導入手順が完了している場合、Steamからクラフトピアを起動した後、
Visual Studioで[デバッグ(D)] - [Unityデバッガーのアタッチ]を実行することで、
クラフトピアとVisual Studioが接続されます。

試しにブレイクポイントを設定して、
MODが動作する場面でブレイクポイント部分で中断できるか試してみるとよいでしょう。


備考

シンボル(pdbおよびmdb)がちゃんと読み込めていない場合、
ブレイクポイントを設定しても「ブレイクポイントは、現在の設定ではヒットしません」と出てしまう場合があります。
もしブレイクポイントが作動しない場合は、[Unityデバッガーのアタッチ]を実行中に、
[デバッグ(D)] - [ウィンドウ(W)] - [モジュール]で自作モジュールのシンボル状態を確認してみてください。

もしシンボルが読み込めていても上記エラーが出る場合は、
[デバッグ(D)] - [オプション(O)] のデバッグ全般から下記のチェックを外してみてください。
  • マイ コードのみを有効にする
  • 元のバージョンと完全に一致するソースファイルを必要とする

タグ:

+ タグ編集
  • タグ:
ウィキ募集バナー